Syllabus, CPSC 331, Fall 2008

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


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

 About CPSC 331

Calendar Description

Algorithms: searching, sorting, graph navigation. Data structures: arrays, lists, stacks, queues, graphs, trees, hash tables; time and space efficiency of associated algorithms.

About the Course

A large proportion of computing time is spent solving a very small number of fundamental problems concerned with the organization of information. Computer Science 331 introduces data structures and algorithms that are commonly used to solve these problems. The material in this course therefore serves as part of the foundation upon which much of the rest of computer science is built.

Computer Science 331 is, possibly, the first course that students take that includes algorithms whose correctness is not obvious and whose running time is difficult to analyze. The course introduces or reviews terminology, notation, and techniques that are commonly used in computer science to prove that algorithms are correct and efficient. This material includes applications of concepts from discrete mathematics that are introduced in the prerequisite or corequisite course Mathematics 271. The course also introduces principles and techniques for software testing, along with support tools that can be used to carry out testing, that will help you to improve the programs that you write for this and future computer science courses.

This course continues the study of object-oriented programming that was initiated in its programming prerequisites. A variety of programming concepts that were discussed in Computer Science 233, 235, or Computer Engineering 339 will be applied by students in order to complete assignments in this course. You should have a much better understanding of these programming concepts as a result.

Students who completed the Engineering prerequisite, Computer Engineering 339, should note that students in Computer Science 331 will be required to program in Java. Material that introduces this programming language, that is suitable for students who are familiar with C++, is available for these students. Engineering students should also note that a grade of C− or higher must be earned in this course if it is to be used as a prerequisite for other computer science courses.

Computer Science 331 is offered by the Department of Computer Science at the University of Calgary. It is required for all undergraduate programs offered by the Department of Computer Science in the Faculty of Science, as well as the Computer Engineering and Software Engineering programs offered by the Department of Electrical & Computer Engineering in the Schulich School of Engineering.

Additional information about this course can be found using the menu on the top of this page.


This page last modified:
http://www.cpsc.ucalgary.ca/~jacobs/cpsc331/F08/syllabus.html