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]
Thinking Python: How to Think Like a Comp
uter Scientist,
Cambridge University Press.
The following textbooks are not required but they can serve as good
reference material:
[2] [3] [4]
Optional Reading:
Kenneth Iverson Turing Lecture
There will be two assignments.
There will two quizes during the term. The quiz will be marked
randomly based on one question.
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.
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.
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
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
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
Text Book
Allen B. Downey.
Other References
John C. Mitchell. Concepts In Programming Languages,
Cambridge University Press, 2003.
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:
Part 2
Array Programming:
Part 3
Persistent Programming:
Part 4
Object Oriented Programming
Part 5
Meta Programming
Part 6
Functional Programming
Part 7
Generators, Coroutines and Concurrent Programming
Assignments
Quizes
Machine Project
Exams
Past Exams
Grading Policy
Assignment
10%
Quiz
10%
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.