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

 About CPSC 331

Calendar Description

Fundamental data structures, including arrays, lists, stacks, queues, trees, hash tables, and graphs. Algorithms for searching and sorting. Introduction to the correctness and analysis of algorithms. For computer science majors interested in algorithm design and analysis, information security, and other mathematically-intensive areas.

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.

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


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