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
TA Wesley May
  wesley at cs.toronto.edu
TA Young Yoon
  yoon at msrg.utoronto.ca
Lecture Fri 11-12 BA1230
  Fri 12-1 BA1230
Tutorial Mon 11-12 BA 1240
  on selected weeks

 

Online Resources

 
  Web Site http://www.eecg.toronto.edu/~jzhu/csc326/csc326.html  
  Discussion Group http://groups.google.com/group/csc-326-2012  
  Announcement http://www.eecg.toronto.edu/~jzhu/csc326/csc326an.html

 

Important Dates  
   

 
  Oct 15th Assignment 1 due  
  Oct 29th Assignment 2 due  
  Nov 2nd Midterm, in class  
  Nov 19th Assignment 3 due  
  Dec 7th Project due

 

Tutorials

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

 
  Oct 6th HTML and CSS tutorial  
  Oct 15th Assignment 1 review  
  Oct 29th Assignment 2 review  
  Nov 5th Web Framework tutorial  
  Nov 12th Midterm solution review  
  Nov 19th Assignment 3 review  
  Nov 26th Project Help  
  Dec 3rd Problem review

 

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 Computer Scientist, Cambridge University Press.

 
 

[2]      

Mark Pilgrim. Dive into Python, Apress, 1999.

 

Other References

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

 
 

[3]      

John C. Mitchell. Concepts In Programming Languages, Cambridge University Press, 2003. Available online to UofT students.

 
 

[4]      

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

 
 

[5]      

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

 

Lectures

 
  Part 0 Introduction: Lec 1

 
  Part 1 Imperative Programming: Lec 2 Lec 3, 4

 
  Part 3 Array Programming: Lec 5, 6 Kenneth Iverson Turing Lecture

 
  Part 4 Persistent Programming: Lec 7

 
  Part 5 Object Oriented Programming Lec 8

 
  Part 6 Meta Programming Lec 9 Reading: Shalabh Chaturvedi Tutorial on Python Types

 
  Part 7 Functional Programming Lec 10

 

Assignments

Assignment 1:

words.txt,

test26.pyc ( This is for Python 2.6).

 
  Oct 29th Assignment 2

Assignment 2

 
  Nov 19th Assignment 3

 

Machine Project

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

Bonus mark will be given to winners of ``Best Idea Award'' and ``Best Code Award''.

 

Exams

There will be two comprehensive exams for this class: a 50min midterm and a 2:00hrs final. The exams will be based on material covered in the lectures (i.e., reading assignment), tutorials and the machine project. All exams are open book/lecture notes and you are required to bring some form of valid picture ID. The dates and times of the exams will be announced in the newsgroup.

 
    Past Exams

2011 Midterm

 

Grading Policy

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

Assignment 20%
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.