Course Objective

General introduction of modern programming languages and paradigms, including imperative programming, object-oriented programming, aspect-oriented programming, functional programming, and concurrent programming. The course will be supplimented by hands-on practice of web programming utilizing a multitude of programming paradigms with the syntactical versatility of Python.

 

Course Info

Instructor Jianwen Zhu
  312 Engineering Annex
  jzhu at eecg.tornoto.edu
Lecture Tue 1-3 LM162
  Thu 1-2 LM162
Lab PRA0101: Thu 9-12 GB 243
  PRA0102: Thu 9-12 GB 243
  PRA0103: Mon 12-3 SF 1012
  on selected weeks
Tutorial TUT0101: Mon 6-7pm BA1230
  TUT0102: Mon 5-6pm GB404
  on selected weeks

 

Online Resources  
   

 
  Web Site http://www.eecg.toronto.edu/~jzhu/csc326/csc326.html

 

Due Dates  
   

 
  Midnight, Oct 15 Assignment 1  
  Midnight, Nov 19 Assignment 2  
  Midnight, Oct 08 Lab 1  
  Midnight, Oct 22 Lab 2  
  Midnight, Nov 05 Lab 3  
  Midnight, Dec 03 Lab 4

 

Tutorial Contents  
   

In tutorials, practice problems will be reviewed and help with projects will be provided.

 
  TUT1 HTML and CSS tutorial  
  TUT2 Web Framework tutorial  
  TUT3 Assignment 1 review  
  TUT4 Midterm solution review  
  TUT5 Assignment 2 review  
  TUT6 Exam review

 

Tutorial Schedules  
   

 
  TUT1 TUT0101: Sep 25 6-7; TUT0102: Sep 25 5-6  
  TUT2 TUT0101: Oct 09 6-7; TUT0102: Oct 09 5-6  
  TUT3 TUT0101: Oct 30 6-7; TUT0102: Oct 30 5-6  
  TUT4 TUT0101: Nov 13 6-7; TUT0102: Nov 13 5-6  
  TUT5 TUT0101: Nov 27 6-7; TUT0102: Nov 27 5-6  
  TUT6 TUT0101: Dec 04 6-7; TUT0102: Dec 04 5-6

 

Lab Schedules  
   

 
  Lab0 PRA0101: Sep 21 9-12; PRA0102: Sep 21 9-12; PRA0103: Sep 25 12-3;  
  Lab1 PRA0101: Sep 28 9-12; PRA0102: Oct 05 9-12; PRA0103: Oct 02 12-3;  
  Lab2 PRA0101: Oct 12 9-12; PRA0102: Oct 19 9-12; PRA0103: Oct 16 12-3;  
  Lab3 PRA0101: Oct 26 9-12; PRA0102: Nov 02 9-12; PRA0103: Oct 30 12-3;  
  Lab4.1 PRA0101: Nov 09 9-12; PRA0102: Nov 16 9-12; PRA0103: Nov 13 12-3;  
  Lab4.2 PRA0101: Nov 23 9-12; PRA0102: Nov 30 9-12; PRA0103: Nov 27 12-3;

 

Office Hour

Please contact by email or during lectures to make appointment.

 

Text Book

 
 

[1]      

Allen B. Downey.

Thinking Python: How to Think Like a Comp uter Scientist, Cambridge University Press.

 

Other References

The following textbooks are not required but they can serve as good reference material:

 
 

[2]      

John C. Mitchell. Concepts In Programming Languages, Cambridge University Press, 2003.

 
 

[3]      

Robert W. Sebesta. Concepts of Programming Languages, 9th ed ., AddisionWesley, 2009.

 
 

[4]      

Michael L. Scott. Programming Language Pragmatics, Third Edition Morgan Kaufmann Publishers, 2009.

 

Lectures

 
  Part 0 Introduction: Lec 1

 
  Part 1 Imperative Programming:

Lec 2z Lec 3, 4

 
  Part 2 Array Programming:

Lec 5, 6

Optional Reading: Kenneth Iverson Turing Lecture

 
  Part 3 Persistent Programming:

Lec 7

 
  Part 4 Object Oriented Programming

Lec 8

 
  Part 5 Meta Programming

Lec 9

Reading: Shalabh Chaturvedi Tutorial on Python Types

 
  Part 6 Functional Programming

Lec 10

 
  Part 7 Generators, Coroutines and Concurrent Programming

Lec 11

 

Assignments

There will be two assignments.

Assignment 1:

 

Quizes

There will two quizes during the term. The quiz will be marked randomly based on one question.

 

Machine Project

You are required to complete a machine project in 4 lab sessions, in which you are to construct a web search service using Python programming language and the programming paradigms learned in class. The detailed project decription is distributed seperately.

 

Exams

There will be two comprehensive exams for this class: a midterm and a final. The exams will be based on material covered in the lectures (i.e., reading assignment), tutorials and the machine project. In all exams you are required to bring some form of valid picture ID.

 
    Past Exams

2011 Midterm

 

Grading Policy

The weighting scheme for the class requirements will be as follows:

Assignment 10%
Quiz 10%
Project 20%
Midterm Exam 20%
Final Exam 40%
Bonus 10%

Minor lab downtime will not qualify for project extensions. Nuclear meltdown in the lab might qualify. To protect yourself, keep backups on the lab machines so if your computer crashes, you can recover.

Absence from any exam will result in a zero score unless it is due to an emergency and official documentation is provided.

 

Cheating Policy

Cheating is against ``fair-play'' and will not be tolerated under any circumstances. While the pressures of many classes, homeworks, work and/or extracurricular activities can be great, this is never an excuse for copying solutions from others. "Helping" somebody by allowing them to "borrow" your work is not doing them a favor either, but indicates your approval and active participation in such activities. The University holds among its highest principles the notion of academic freedom and integrity. If you are caught cheating it may lower your grade or it can even give you a fail grade for the class. If you think that there is an issue that influences your performance in the class then talk to the instructor.

 

Remark Request

 
    Fill in a remark request form, which will be available on the web.  
    Hand in the form and the lab/test to the TA.

 
    You may not submit a remarking request later than two weeks returned. It's your responsibility to pick up your work as soon as possible.

 
    Mark can decrease if the TA finds something that was incorrectly awarded too high a mark.

 
    If you are still not satisfied after getting back your remarked assignment (of after having a meeting with the marker), contact your instructor to discuss your situation.