Syllabus, CPSC 331, Winter 2017

home page -  news -  syllabus -  schedule -  assignments -  tutorials -  java -  references -  Mike Jacobson


about CPSC 331 -  learning goals -  CS background -  math background -  writing background -  how to succeed -  what to avoid -  assessment

 Learning Goals

The learning goals for this course are as follows. However, students should note the following: You learn by doing. Students who do not attend and participate in lectures and tutorials, complete tutorial exercises, and devote substantial time to course assignments will probably not learn very much in this course at all.

Students should also note that, while programming is important and while improvement of students’ programming ability is one of the goals of the course, this course also focuses on other skills that might be at least as important for software developers (especially, later in their careers). Thus “showing that you know how to program” is not generally the (only) objective of assignments and tests!

  1. Students will be introduced to the concept of an abstract data type and the use of this to classify data structures according to the operations they support.

  2. Students will be introduced to or will learn more about several fundamental data structures including

    In each case students will learn about the operations these data structures support (so that you understand the problems these data structures can be used to solve), and students will learn about the algorithms that are used to carry out these data structures’ operations.

    Students will also learn about algorithms that are commonly used to search in unordered and ordered arrays, and to sort the contents of an array. In cases where the algorithms are not obvious, you will understand why they solve the problems they are supposed to. You will also learn about the resources these algorithms use.

  3. Students will be expected to complete a variety of programming exercises and assignments during this course. As a result it is expected that students’ programming skills (notably including object-oriented programming skills) will improve as a result of this course.

    These assignments will include the implementation and testing of data structures that are discussed in this course. They will also include the application of professionally developed implementations of data structures in the Java Collections Framework.

  4. Students will be introduced to (and will have a basic understanding of) issues and techniques for the assessment of the correctness and efficiency of programs.

    Proofs of the correctness and efficiency of a variety of algorithms will be presented by the instructor in class, and students will be asked to answer questions about proofs (possibly including coming up with their own) on assignments and tests. Working to understand these proofs (and their organization) will help to prepare computer science students for third- and fourth-year courses in which they will be expected to prove the correctness and efficiency of algorithms, themselves. This will prepare engineering students for discussions of nontrivial algorithms in later computer science courses that they take, as well.

  5. Students will also learn more about the principles and objectives of software testing, and you will have access to information you can use to test your programs more thoroughly than you might do now.

    Java support tools, including a debugger, unit testing environment, and profiler will all made available. You will learn how to use these tools and you will be expected to use them to improve the software that you write when working on assignments in this course.

  6. Students will be required to read technical material with care and write technical material with precision — and students’ writing will be assessed in this course.


Last updated:
http://www.cpsc.ucalgary.ca/~jacobs/Courses/cpsc331/W17/syllabus/goals.html