MW 1:20-2:40pm in BSB 335
MW 10:30-noon or by confirmed appointment
Office: BSB 308
Email: shende AT camden DOT rutgers DOT edu
This course follows up on CS 111/112 (Programming Fundamentals+software lab I). We will go through a very rapid and condensed review of topics from those courses in the first week. By the end of week 2 at the latest, everyone registered for the class is expected to be able to write elementary Python code with expressions (arithmetic and logical), statements (assignments, conditionals and simple loops) and functions. This means that anyone transferring from another school with an equivalent course in a language different from Python, will be expected to be reasonably conversant with basic Python programming in the first couple of weeks. Throughout the course, you should anticipate that you will be writing a lot of code: be prepared, for instance, to spend at least 4-5 hours (or more, depending on your level of preparation) per week doing programming assignments for the course!
All the class material (including but not limited to weekly content summaries, assignments and quizzes) will be organized on the Sakai site for the course; be sure to bookmark the site for easy reference. While I will make every effort to inform you about deadlines and so forth, you are ultimately responsible for checking the course site frequently for any content updates, discussions etc.

Python 3: Object Oriented Programming by Dusty Phillips,
Packt Publishing, 2010.
Please note that it is possible to purchase an electronic (eBook) version of
the textbook instead of the hardcopy version from the publisher's
website. For supplementary reading, I would also highly recommend
consulting the following links:
Unless specified otherwise, all chapters specified below (in the advance reading) are from the textbook by Phillips.
| Week | Topics | Advance Reading Preparation |
|---|---|---|
| 1 | Python fundamentals | Python Tutorial (first 5 sections) |
| 2 | Object-oriented design | Chapter 1 |
| 3 | Classes and Modules | Chapter 2 |
| 4 | Inheritance and Polymorphism | Chapter 3 |
| 5 | Exception handling | Chapter 4 |
| 6 | Using OOP | Chapter 5 |
| 7 | Unit-testing code | Chapter 11 |
| 8 | Built-in objects | Chapter 6, 7 (functions) |
| 9 | Functional programming | Rest of Chapter 7 |
| 10 | Iterators and Generators | Dive Into Python: Ch. 6, 7, 8 |
| 11 | Design patterns | Chapter 8 |
| 12 | More design patterns | Chapter 9 |
| 13 | Data Structures: Binary heaps | Class notes |
| 14 | Project Demonstrations |
Your grade will be based on your performance on the following:
It should be clearly understood that students cannot collaborate on assignments, quizzes or exams, whether by copying (or substantially "borrowing") from someone else or allowing their work to be copied by others. I will treat all such cases of plagiarism or cheating very seriously, and they will be reported to the Dean's office immediately without exception. Please make sure that you do not put yourself in that position - and do read and understand the Academic Integrity Policy and Student Code of Conduct at Rutgers.