McGill University
School of Computer Science
Course Outline

Introduction to Computer Science with Algorithms

Instructor Information
Instructor Joseph Vybihal    
Office McConnell 323, MF 4-5 PM    
Class MWF 13:00-14:30 PM Web Site


Course Description

This course will introduce you to many of the basic concepts in computer science. The most fundamental idea being the algorithm. Since you already have experience in programming, we will focus our attention on how to design and program algorithms that are correct and efficient. Measuring techniques exist that will be incorporated in our search for the perfect algorithm. Programming is a vital skill, and becoming good at it is a major component of this course. We will divide our time between studying existing algorithms that have been created well, and developing techniques and habits that encourage us to design good code. We will also discuss what "good" means in relation to programming. In the end you will be able to use Java to create correct and efficient code. You will have learned new and useful algorithms and data structures that are commonly used in science, engineering and business. This knowledge will be portable across languages and machines. This, then, is the ultimate goal of good software and engineering techniques.

Tentative Schedule
1 Part One: Introduction
Algorithms, Coding and Good Code
CH 1  
2 Running Time Analysis

Part Two: Basics of Java

CH 1 and Notes

See 202 web site

Ass #1 Given
3 Java I/O, Iteration, Arrays and Procedures Notes  
4 Classes, Objects, ADTs Notes Ass #2 Given
5 Part Three: Recursion

Thinking Recursively

CH 8  
6 Review and Midterm Exam   Tutorial #1

Midterm Exam

7 Part Four: Advanced Data Structures and Algorithms

Collection Classes & An Applet Primer

CH 3 & CH 4 Ass #3 Given
8 Linked Lists & Java Iterators CH 4 & CH 5  
9 Stacks, Queues and Trees CH 6, CH 7, CH 9 Ass #4 Given
10 Heaps & B-Trees CH 9 & CH 10  
11 Searching and Sorting CH 11 & CH 12 Ass #5 Given
12 Inheritance and Graphs CH 13 & CH 14  
13 Misc. Topics (if time permits) Notes Ass #6 Given
14 Review and Final Exam   Tutorial #2

Final Exam



Data Structures & Other Objects Using Java. By: Michael Main. Addison Wesley. ISBN 0-201-35744-5.

Note that this will only be a reference book. Class notes will be the primary source of information for this course.

Course Evaluation
Assignments 30 % Six assignments each weighted 5 %
Midterm 20% TBA - probably week of February 5th.
Final Exam 50 % TBA


Tutorials = 2 sessions (1-Midterm, and 2-Final)