Basic Information

Instructors:Martin Robillard and Mohamed Smaoui
Time and place:Mondays, Wednesdays, Fridays, 9:35-10:25, ADAMS AUD
Office hours:See on myCourses


(3 credits; 3 hours) An introduction to the design of computer algorithms, including basic data structures, analysis of algorithms, establishing correctness of programs and program testing. Overview of topics in Computer Science.

Reference Material

Required Textbook: Allen B. Downey, Think Java - How to Think Like a Computer Scientist, version 5.1.2.

Complementary: Frank M. Carrano and Timothu M. Henry. Data Structures and Abstractions with Java, 4th Edition, Pearson.

Course Work and Evaluation

Official Academic Integrity Statement McGill University values academic integrity. Therefore all students must understand the meaning and consequences of cheating, plagiarism and other academic offenses under the Code of Student Conduct and Disciplinary Procedures (see for more information). Note that we reserve the right to run plagiarism detection software on all software submitted as assignments.

Language Policy In accord with McGill University’s Charter of Students’ Rights, students in this course have the right to submit in English or in French any written work that is to be graded.


The following is a basic breakdown of topics for each week. The detailed schedule is available on mycourses.

WeekLecture Topics
1Introduction to algorithms. Basics of programming
2Basics of programming: loops, conditionals, arrays and strings
3Recursion; Debugging
4Proofs by induction; Running time of algorithms
5Big O notation; Analysis of algorithms
6Introduction to object-oriented programming
7Abstract data types: stacks, queues, trees
8Review and midterm exam
9Object-oriented programming
10Abstract data types: heaps, hashtables, graphs
11Topics in computer science: graph algorithms, search engines, cryptography
12Topics in computer science: Bioinformatics, web applications, privacy and the Internet