Introduction to Computer Science      COMP 250       Winter 2010
Instructor: Professor Michael Langer
Lectures MWF  4:35-5:35       ENGTR 100

Resources
Teaching Assistants

Assignments 1 and 3
  Mathieu Rousseau [email]
  Glenn Hickey [email]
  Ethan Kim [email]   [www]

Assignments 2 and 4
  Faiyaz Zamal [email]   [www]
  Parya Momayyez [email]   [www]
  Julien Villemure [email]   [www]


LECTURE SCHEDULE AND NOTES READINGS, EXERCISES, ASSIGNMENTS, EXAMS
Preliminaries  (Jan. 4-8, 2010)
  0.   Course Outline (Winter 2010)
  1.   grade school algorithms (addition and multiplication)  (notes)
  2.   binary number representations  (notes)
Reading:   Java Background (terms/concepts from COMP 202 but not COMP 208)

Exercises 1: number representations     (solutions)
Linear Data Structures (Jan. 11- 22, 2010)
  3.   arrays, insertion sort (notes)   (slides)
  4.   singly linked lists  (notes)   (slides)
  5.   doubly linked lists  (slides)   (code)
  6.   Java: ArrayList vs. LinkedList (notes)   (slides)
  7.   stacks (notes) (slides)
  8.   queues (notes) (slides)
A1   solution + grading scheme (mean 82/100, N=113)

A2   code   solution   test files   grading FAQ (mean: 72.8/100, N = 108)

Quiz 1 (with solutions) covered lectures 1-8 (mean: 6.8/10, N=108)

Exercises 2: linear data structures
Recursion  (Jan. 25 - Jan. 29, 2010) 
  9.     call stack, factorial (notes) (slides)
10.    fibonacci, Tower of Hanoi (notes) (slides)
11.    decimal to binary, power, binary search (notes) (slides)

Exercises 3: recursion [last modified April 6]
Analysis of Algorithms  (Feb. 3-12, 2010)
12.     big O (notes) (slides)
13.     not big O (notes) (slides)
14.    recurrences: factorial, Tower of Hanoi (notes) (slides)
15.        ... decimal to binary, matrix power, Fibonnaci (notes) (slides)
16.    mergesort (notes) (slides)
Required Reading:   proofs by induction

Exercises 4: big O
big O tutorial (notes) (held Apr. 15, 16)

Exercises 5: recurrences
Non-linear Data Structures (Feb. 15- March 22, 2010)    
17.     trees (notes) (slides)
18.     tree traversal (notes) (slides)
19.     binary trees, expression trees (notes) (slides)
   STUDY BREAK (Feb. 22-26)
20.    binary search trees 1 (notes) (slides)
21.    binary search trees 2 (notes) (slides)
22.    priority queues, heaps (notes) (slides)
23.    building a heap (slow) (notes) (slides)
24.    building a heap (fast), heapsort (notes) (slides)
25.    maps (notes) (slides)
26.    hashing (notes) (slides)
27.    graphs (notes) (slides)
28.    graph traversal (DF, BF) (notes) (slides)

Quiz 2 with solutions (mean 6.6/10, N = 100)

Exercises 6: trees

A3 (PDF) and (source code) and solutions (mean = 69.6, N=105)

Exercises 7: hashing

Exercises 8: graphs

Quiz 3 and solutions (mean 6.7/10, N=87)
Object Oriented Design in Java  (March 24 to April 14, 2010 )
29.     inheritance 1 (notes) (slides)
30.   inheritance 2 (notes) (slides)
31.   polymorphism (notes) (slides) (test code)
    EASTER BREAK (Fri. April 2, Monday April 5)
32.    interfaces (notes) (slides)
33.    abstract classes, casting (notes) (slides)
34.    modifiers (notes) (slides)
35.    review for final exam (no notes) (slides)

Exercises 9: object oriented design
+   more OOD exercises   (from "Introduction to Java programming" by D. Liang, Ch. 10)


A4 (PDF)   (starter code) (sdot files) and solutions

Final Exam and solutions (mean 23.7/30)