CIT 591 Programming Languages & Techniques I
Fall 2014, David Matuszek

The purpose of this course is to teach programming in modern languages, along with best-practice programming habits. We cover Python for about half the course, then transition to Java (by way of Processing).

This site holds links to lectures, assignments, resources, and other material. Announcements and other updates will normally be done on Piazza. Program submissions and grades will be on Canvas.

Got a question? Ask it on Piazza!

Date Announcements
Older Previous announcements

Meeting times
Lecture/Lab MWF 3:00-4:30 Moore 207
Beginner's section (optional, for students with little or no programming background) TBD TBD
 Office hours
Piazza (For fastest response, try here first!)
All office hours subject to temporary changes; check Piazza for updates.
Always open, 24/7  

Whenever my door is open.
Specific office hours:
Tu Th 12-1:30
Levine 162
Hao Hu Th 4-5:30 Moore 207
Chris Ivey Tu 3-4:30
Mark Mercurio Tu 12-1:30
Brad Palchesko MW 2-3
Search Dave's web sites:
Last year's CIT591
Academic Integrity Policy
Textbooks and Resources
MCIT schedule
Java version test page
Java Syntax Pages (online)
or as a downloadable .zip file
Eclipse FAQ and Eclipse Tips (somewhat outdated)
Software SwingExamples.jar
Academic resources

Date Lectures Readings, Assignments, etc.
Aug 27 PowerPoint Sudden Python Python warm-up exercises (not to be handed in)
Aug 29 (This will be filled in as the semester progresses.) Assignment Odds and Evens
Optional Read Why is Programming Fun?external link
Sept 1 Labor Day (no classes)  
Sept 3 Numbers, and other data types Read Concise Python 2
Assignment Figurate Numbers
Sept 5 Fun with Pair Programming external link  
Sept 8 Lists, tuples, strings  
Sept 10 Agile programming  
Sept 12 Unit testing

Assignment Three Musketeers
Read Unit Testing and TDD in Python

Sept 15 Scope, references  
Sept 17 Strings, exceptions  
Sept 19 Input/Output Assignment HTML Tidy
Sept 22 Sets  
Sept 24    
Sept 26 Dictionaries  
Sept 29 Scope again Assignment Simple Cipher
Oct 1    
Oct 3   Assignment Library
Oct 6    
Oct 8    
Oct 10 Fall Term Break  
Oct 13 PowerPoint Extreme Programming  
Oct 15 Quiz David Rittenhouse Labs (DLRB), A1  
Oct 17 Intro to Processing Assignment Draw a Picture
Read Processing cheat sheet #1 and #2
Oct 20 Java Syntax Example DodgeEm (zipped)
Oct 22 Processing classes  
Oct 24 Eclipse Read Installing the Processing Plugin
Assignment Game
Oct 27 PowerPoint Condensed Java  
Oct 29 PowerPoint Class Structure  
Oct 31 PowerPoint Polymorphism Assignment Negadecimal Numbers
Nov 3 PowerPoint JUnit  
Nov 5 PowerPoint Inner Classes  
Nov 7 PowerPoint Abstract Classes Assignment Array Operations (Layouts)
Nov 10 PowerPoint Exceptions  
Nov 12 PowerPoint Swing  
Nov 14 PowerPoint Threads Assignment Flash Cards
Nov 17    
Nov 19 PowerPoint Animation  
Nov 21 PowerPoint MVC Assignment Kaleidoscope
More information Java graphics
Example Bouncing ball external link
Nov 24 PowerPoint Comments  
Nov 26 Day before Thanksgiving (No class)  
Nov 28 Thanksgiving break (No class)  
Dec 1 PowerPoint Java I/O  
Dec 3 PowerPoint More about classes Assignment Wator
Dec 5 PowerPoint Bits and pieces  
Dec 8 PowerPoint Java O-O summary  
Dec 19

Final Exam, 3pm-5pm, David Rittenhouse Labs (DLRB), A4
This exam date/time is set by the Registrar and is non-negotiable.


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