Archived course page. The lecture, demo and assignment files for this course were not all kept, so many of the links below no longer work. Back to Teaching

WLU Logo CS 112 (W '10), Fundamentals of Programming II (Stough)

 

Schedule:

Lecture Date Topics Assigned / Referenced
Assignments Due/Comments
WEEK
1

  Chapters 6, 7, 8
   -Python review (including recursion)
   -7.1, 7.2: Graphics
   -Object-oriented design, Common ops (init, str, cmp, eq)
   -Abstraction and Abstract Data Types



0
M, Jan 11
  syllabus
  Lambert Textbook Website here.
  What to expect
  Brief python review (list, tuple, dict, functions, map, filter, reduce)
  General Exhaustive Python Reference
  Some useful Python tutorials
  Putting python on your computer, some instructions:
   -Windows: save and run this file.
   -Mac: disk image here.
   -Unix: use yumex or synaptic (ubuntu) or whatever package manager,
               get python and python-tools (optional: iPython, scipy, numpy, PIL)
 
  Problem Set 1

  Read/review Chs 6, 7, 8
  (Ch 7 is really 7.1-7.2)

1
W, Jan 13
  List processing, simple functions, map, filter, reduce
  OO design
  introPython.py
  craps.py (p. 301)




Th, Jan 14
  Python coding:
    listMethods.py (see info on strings and lists, and on manipulating strings)
  OO:
    rational.py (complete the definitions, see here) (p. 307)
    bankAccount.py (complete the class definition)
  Graphics:
    turtlegraphics.py 
    ccurve.py (p. 261)
 

2
F, Jan 15
  Object-oriented Programming

  Inheritance, Polymorphism, inheriting from list
    people.py
    vector.py
  Read Chs 8, 11  
WEEK
2

  Chapters 8, 11
   -Object-oriented design
   -Complexity Analysis (Asymptotics, O-notation, Searching, Sorting)

 

3
M, Jan 18
  Object interaction
    cards.py
    blackjack.py
  Problem Set 2
    -wordScanner.py
    -inoperative.txt
    -mary.txt
    -job.txt
  Problem Set 1 due today.
    -drawCircle.py
    -kochSnowflake.py
    -listMethods.py
    -rational.py    
4
W, Jan 20
  Asymptotics (best, worst, average), O-notation
  Searching - linear on unsorted, linear on sorted, binary
    testSearch.py

 

   

Th, Jan 21
  Finish binary search
  Sorting
  PS2 work.
      -PS2's WordScanner, implementing __iter__  (Section 16.6.1)
 

5
F, Jan 22
  Variations on the computation of Fibonacci numbers
     fibonacciPrograms.py
  Efficient Exponentiation
  Minimum finding, order statistics 
  Read Chapter 11
  Read Sections 12.2-3
  Read Section 17.1
 
WEEK
3

  Chapters 11, 12, 17
   -11, 17.1: Recursive Sorting, Complexity Analysis
   -12.2, 12.3: Documentation and Testing



6
M, Jan 25
  Sorting - selection, insertion, analysis of, profiling
     sortingProfiling.py
  Quicksort and mergesort
  Problem Set 3  
 
  Problem Set 2 due today. 
    -concordance.py
7
W, Jan 27
  Sorting - quick, merge
  Documentation and Testing
 
  

Th, Jan 28
  PS3 work
 
 
8
F,  Jan 29
  quicksort, mergesort analysis
  O(N) Sorting (!?!)
    radix.py
  M1 Practice    Problem Set 3 due today.
    -sortingTests.py  
WEEK
4

  Chapter 13
   -Collections, Arrays, Linked Lists



9
M, Feb 1
  review 
 
  M1 Practice due IN CLASS.

W, Feb 3
  Midterm 1 today
  Read Chapter 13
10
Th, Feb 4
  M1 review
  Arrays, Lists (complete the definition) (see here on raising errors)
    arrays.py
  Problem Set 4
 
11
F, Feb 5
  Linked Lists
    linkedList.py
  Read Chs 14, 15
WEEK
5

Chapters 14, 15
   -Stacks (Implementations, Recursion, Arithmetic Evaluation)
   -Queues (Implementations, Recursion, Priority Queues)



12
M, Feb 8
  Doubly-linked, and Circular Linked Lists 
    circList.py 

 
13
W, Feb 10
  Stacks and Queues, ADTs (interfaces, functionality), implementation
  Problem Set 5
    -calculator.py 
  Problem Set 4 due today.
    -list.py   

Th, Feb 11
  Stacks - implementation, applications, analysis
    write Stack and Queue __str__.
    stack.py, define copyStack, reverseStack
    queue.py, define copyQueue, reverseQueue
  PS5 discussion - arithmetic expression evaluation
 

14
F, Feb 12
  Stacks - depth first search, recursion
    iterFib.py - simulating recursion with a stack. 
                         basically, doing the work recursion does for you.
  Queues - breadth-first search
   

WEEK
6

  Chapters 14, 15
   -Stacks cont.
   -Queues cont.



15
M, Feb 15
  Queues - applications of
  Problem Set 6
    -linkLister.py  
  Problem Set 5 due today. 
    -calculator.py
16
W, Feb 17
  Queues - breadth-first search
    coinPuzzle.py  
 
 

Th, Feb 18
  linkedStack, listQueue - comparing stack/queue ADT implementations
  PS 6 work

 
 

17
F, Feb 19
  Priority Queues
    priorityQueue.py
  Read Chapter 16   Problem Set 6 due Monday.
    -webCrawler.py 


  Washington Break 2/22 through 2/26
 

WEEK
7

  Chapter 16
   -Indexed and Positional Lists, Iterators



18
M, Mar 1
  Indexed and Positional Lists
 
 
19
W, Mar 3
  Heap storage, disk storage
  Doubly linked list
    dblLinkedList.py
 
  

Th, Mar 4
  Doubly linked list implementation of positional list
 
 
20
F,  Mar 5
  List sorting 
  M2 Practice

WEEK
8

  Chapter 17
   -17.2, 17.3: Recursion (List Processing, Backtracking)



21
M, Mar 8
  review
 
  M2 Practice due IN CLASS.

W, Mar 10
  Midterm 2 today
  Read Sections 17.2-3
 
22
Th, Mar 11
  Recursive Structures, list processing
    recList.py
    lisplist.py
  Problem Set 7 
    -manyqueens.py 
    -grid.py 

23
F, Mar 12
  Backtracking, Queens problem 
  tail recursion   
  Read Chapter 18
WEEK
9

  Chapter 18
   -Trees (Search Trees, Heaps and Heapsort, Expression Trees)



24
M, Mar 15
  Recursive decent and Programming Languages
    parsers.py
  Trees 
  Problem Set 8
    -huffman.py
    -poeLetters.txt 
  Problem Set 7 due today.
25
W, Mar 17
  Trees, Binary Trees, Search Trees
    binaryTree.py 



Th, Mar 18
  Binary Search Tree: find, add, remove
    binarySearchTree.py
  PS8 work
 

26
F, Mar 19
  Heaps, priority queues and heapsort
    heap.py  
  Read Chapter 19
WEEK
10

  Chapter 19 
   -Sets and Dictionaries/Maps
   -Hashtables, Chained Hashtables



27
M, Mar 22
  Heaps, priority queues and heapsort
    heap.py 
  red/black, AVL and means of avoiding unbalanced trees
    splayTree.py 
  Problem Set 9 
    -names.dic 
    -propernames.dic 
    -manywords.dic 
  Problem Set 8 due today.
    -huffman.py
28
W, Mar 24
  List-based Set, Dict 
    set.py
    dict.py 
  Hashing



Th, Mar 25
  Efficient Dictionary Access
  Hashtables (will want primes.py)
  PS9


29
F, Mar 26
  Evaluating hash functions
    -hashTesting.py 
  Read Chapter 20
WEEK
11

  Chapter 20
   -Graphs



30
M, Mar 29
  review
    twentyQuestions.py
 
  Graphs
  Problem Set 10
    -algorithms.py
    -model.py
    -view.py
    -graph.py  
  Problem Set 9 due today.
    -soundex.py
31
W, Mar 31
  Graphs, rep's of, traversals of



Th, Apr 1
  PS10 work
  Prim's minimum spanning trees
  Topological graph sort 

 
32
F, Apr 2
  Dijkstra's single-source shortest paths 

WEEK
12




33
M, Apr 5
  Finish Graphs 
  More Graph Algorithms 
  Practice Final    Problem Set 10 due today.
    -algorithms.py
    -graphMatrix.py 
34
W, Apr 7
  Image processing
    images.py
    swan.png 
    shark.png
    smokey.jpg
    aerial.png
    imageProcessingIntro.py



Th, Apr 8
  Some image processing fun. 


35
F, Apr 9
  What's next... 
  Review

  Prac. Final due IN CLASS.
    -listQueue.py 


Final exams from Saturday Apr 10 at 2PM through Friday Apr 16 at 5PM