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.
In tutorials, practice problems will be reviewed and help with
projects will be provided.
Please contact by email or during lectures to make appointment.
[1] [2]
The following textbooks are not required but they can serve as good
reference material:
[3] [4] [5]
test26.pyc
(
This is for Python 2.6).
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''.
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.
The weighting scheme for the class requirements will be as follows:
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 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.
Course Objective
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
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
Text Book
Allen B. Downey.
Thinking Python: How to Think Like a Computer Scientist,
Cambridge University Press.
Mark Pilgrim.
Dive into Python,
Apress, 1999.
Other References
John C. Mitchell. Concepts In Programming Languages,
Cambridge University Press, 2003. Available
online
to UofT students.
Robert W. Sebesta. Concepts of Programming Languages,
9th ed ., AddisionWesley, 2009.
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
Oct 29th
Assignment 2
Nov 19th
Assignment 3
Machine Project
Exams
Past Exams
Grading Policy
Assignment
20%
Project
20%
Midterm Exam
20%
Final Exam
40%
Bonus
10%
Cheating Policy
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.