CIT 590/591 Programming Languages & Techniques I
Fall 2012, David Matuszek, Anthony West

We cover Python for approximately the first half of the course, up until the midterm. After that, we transition to Java.

Got a question? Ask it here!

Date Announcements
December 7, 2012 Added a link to (my own copy of) Orren's Git/Eclipse slides.
Older Previous announcements

Meeting times
Lecture MW 3:00-4:30 Towne 303
Lab MCIT: F 3:00-4:30 Moore 207
Beginner's section Wednesdays 4:30-5:30
except on 9/12, will be in Levine 512
Levine 307
 Office hours
Piazza Always open, 24/7  

Whenever my door is open.
Specific office hours: 3:00-4:30 Tuesdays and Thursdays
Moore 176
Charles Milner Monday 12:30 - 1:30 Moore 207
Beth Cooper Monday 6:30-7:30 Moore 207
Yao Chen Tuesday 3:00 - 4:00 Moore 207
Gokul Wednesday 6:30 - 7:30 Moore 207
Courtney Bender Thursday 11:00 - 12:00 Moore 207
Search Dave's web sites:
Last year's CIT591
Academic Integrity Policy
Textbook and Resources
MCIT schedule
Java version test page
Java Syntax Pages (online)
or as a downloadable .zip file
Eclipse FAQ and Eclipse Tips
Software SwingExamples.jar

Date Lectures Readings, Assignments, etc.
Sept 5 Program constituents: Input, arithmetic,
decision making, looping, delegation (functions) and output. Variables and basic data types.
PowerPoint Python
Read Preface and chapters 1 and 2 in Exploring Python (Exploring Python and Creating Python Programs).
Read Errata sheet for Exploring Python.
Read How NOT to go about a programming assignment external link
Read How to get a good grade in this course
Example (Example Python program)
Sept 7
Python cheat sheet
Assignment 01 Hammurabi
Read How Assignments Are Graded
Sept 10 Style. Bitwise operators: & | ~ ^ << >>. Functions: scope, recursion, globals, functions as values.
Read Chapter 3 in Exploring Python (Defining Functions).
Read Style Rules
Read "Official" PEP8 Style Guide External link (long)
Sept 12 break, continue, pass, assert, raise, None. Unit testing. Pair programming.
Concise Guide to Python
"Fun with Pair Programming" external link video
Read Unit testing and TDD handout.
Read Wiki page on TDD External link
Read TDD in one page (PDF file)
More information How to Pair Program External link
Sept 14   Assignment 02 Negadecimal Numbers
Sept 17 Strings. Character encodings.Escaped characters. Raw strings. Lots of string methods. Read Tips for Good Programming
Sept 19 Mutable vs. immutable. Result vs. side effect. Identity vs. equality. Values vs. references. Read Chapter 4 in Exploring Python (Strings, Lists, Tuples, and Sets).
Sep 21 Add period ends
Assignment 03 License Plates
Sept 24 Dictionaries. zip, dict, shelve. Read Chapter 5 in Exploring Python (Dictionaries).
Sept 26 Files. try-catch. Pickling. Accessing directories. Read Chapter 6 in Exploring Python (Files).
Read TDD Quick Reference Guide (pdf)
Sept 28   Assignment 04 Party Time!
Example party_data_small.txt
Oct 1 Modules. Classes. Functions vs. methods. Constructors. Inheritance. __init__, __str__, __repr__, __eq__, __name__. Read Chapter 7 in Exploring Python (Classes).
Read Software Entropy External link
Oct 3 Mapping, filtering, reducing, and list comprehensions. Lambda functions. Quicksort. Read Chapter 8 in Exploring Python (Functional Programming).
Oct 5 Family weekend. Yes, we do have lab. Assignment 05 Library
Example collection.txt
Oct 8 LEGB rule. Scopes, name spaces, and modules. Read Chapters 9 and 10 in Exploring Python (Object-Oriented Programming, Scopes, Name Spaces, and Modules).
Oct 10 Keyword parameters, default parameter values, variable length argument lists, apply, call. Regular expressions. Read Chapter 11 in Exploring Python (Advanced Features).
Oct 12 Drop period ends Assignment 06 Eliza
Oct 15 Data structures. Read Chapter 18 in Exploring Python (Data Structures).
Oct 17 Review Read Concise Python (long)
Oct 19 Fall break No new programming assignment, therefore no lab.
Oct 22 Fall break  
Oct 24 Midterm Exam (and answer key)  
Oct 26 More information Getting started with Eclipse
Read Brief Eclipse tutorial (.txt file)
Read Getting Started With Eclipse
Assignment 07 Self Portrait
Oct 29 Very fast introduction to Java
PowerPoint Condensed Java (47)
Read Python to Java
Read Chapters 1, 2, and 3 in Murach's Java Programming (MJP)
Oct 31 PowerPoint JUnit (27)
PowerPoint Style rules (28)
Read Unit testing in Java
Read Chapter 11, How to work with arrays, in MJP
Nov 2   Assignment 08 Array Operations
Nov 5 PowerPoint Class structure (22)
PowerPoint Polymorphism (26)
Read First three sections of chapter 7, How to define and use classes, in MJP
Read First two sections of chapter 8, How to work with inheritance, in MJP
Nov 7 PowerPoint Comments (30)
PowerPoint Git
PowerPoint Orren's Git/Eclipse slides
Read Git, Githug, and GitHub
Read Understanding Git Conceptually external link
Nov 9   Assignment 09 Githug
Nov 12 PowerPoint Swing (32)
PowerPoint Threads (22)
Read First three sections of chapter 15, How to work with threads, in MJP
Model-View-Controller external link in Wikipedia
Nov 14 PowerPoint Java I/O (41)
Read First three sections of chapter 20, How to work with text and binary files, in MJP
Nov 16 Last day to withdraw Assignment 10 Flashcards
Nov 19 PowerPoint Exceptions (27)
Read First two sections of chapter 14, How to handle exceptions, in MJP
Nov 21 Day before Thanksgiving (No class)  
Nov 23 Thanksgiving break (No lab)  
Nov 26 PowerPoint Model-View-Controller (40)
PowerPoint Animation (18)
Read Understanding Model-View-Controller external link
Nov 28 PowerPoint Inner classes (12)
PowerPoint Abstract classes (22)
Read First two sections of chapter 9, How to work with interfaces, in MJP
Read The Care and Feeding of Software Engineers external link
Nov 30   Assignment Snake
Dec 3 PowerPoint Random bits (19)
PowerPoint Collections (16)
Read First two sections of chapter 12, How to work with collections and generics, in MJP
Dec 5 PowerPoint Java O-O Summary (34) Read Object-Oriented Concepts
Read Java syntax
Dec 7 No lab today.  
M Dec. 17, 3pm-5pm CIT 591 Final Exam, LRSM Auditorium
This is the building diagonally opposite Moore, across both Walnut and 33rd. Answer key
W Dec. 19, 3pm-5pm CIT 590 Final Exam, DRLB A2
This is the building directly across 33rd Street from Moore/Skirkanich..

PowerPoint A PowerPoint document, usually one of my lectures Assignment An assignment Software Software that will be useful in this course
Tutorial A tutorial More information Additional information about the assignment or topic official spec Official specification (always external link offsite)
Read An article; external link indicates offsite Example Example Quiz Quiz or exam