CIT 590 Programming Languages & Techniques
Spring 2013, David Matuszek

When you send me email about this course, please:

Date Announcements
May 6, 2013 Posted squarelotron_tests.zip.
Older Previous announcements

Meeting times
Lecture MW 1:30-3:00 DRLB A2
Lab F 1:30-3:00 Moore 100A and Moore 207
 Questions and course support
This page Announcements, scheduling updates, and assignment changes will be posted here. Updated 3 or 4 times a week.
Piazza Use Piazza to ask and answer questions about the course. Available 24/7
Canvas Use Canvas to submit assignments and check on grades. Assignments posted weekly
Office hours (see Piazza for temporary changes)
Office hours: TR 1-2 PM and R 6-7 PM
or whenever my door is open
Moore 176
Quan Mondays, 6:00-8:00 PM Moore 207
Yao Tuesdays, 3:30 - 4:30 PM Moore 207
Wei Wednesdays ,7:00-9:00 PM Moore 207
Orren Thursdays, 6 - 8 PM Moore 207
Roc Thursdays, 8-10 PM Moore 207
  
Links
Last semester's CIT591
Academic Integrity Policy
Textbook and Resources
Errata for Python book
Dr. Dave's schedule
Java version test page
Concise Guide to Python 2
Java Syntax Pages (online)
or as a downloadable .zip file
Eclipse: Getting started, Settings (both recommended and required), Preferences, FAQ, Tips
Software SwingExamples.jar
Tutorial Tutorials Point External site
Read Using Piazza and Canvas

As I was assigned to teach CIT 590 at the last minute, the following schedule has been hastily adapted from the last time I taught this course. Expect changes!
Date Lectures Readings, Examples, etc.
Wed Jan 9 Introduction. Python vs. Java. Active learning vs. spectator sports. Using IDLE. Data types, expressions, and assignments. Program constituents: Input, arithmetic, decision making, looping, and output. Naming conventions. Pages v-vii, 3-38 in Python book.
Read How NOT to go about a programming assignment external link
Read Grading Policy
Read Grading Criteria for Assignments
Fri Jan 11 Warm-up exercises (not to be turned in!)
Assignment 01 Number Personalities
More information number_personalities_test.py
Mon Jan 14 Functions. Abstraction, information hiding, software reuse. Testing, code walkthroughs. Scope. Read Pages 38-54 in Python book.
Read Style Rules
Example coke_machine.py and coke_machine_2.py
Wed Jan 16 Recursion, global names, exceptions, functions, None. Using the IDLE debugger. Read Pages 54-59 in Python book.
Fri Jan 18 Assignment 02 Balanced Ternary
Mon Jan 21 MLK Day -- no classes
Wed Jan 23 Lists, and operations on sequences. Unit testing and Test Driven Design. Pair programming.

More information Pair Programming Video external link
Read Pages 62-70 in Python book.
Read Unit testing and TDD handout.

Fri Jan 25 Assignment 03 Playfair Cipher
Mon Jan 28 References, identity, equality. Unit tests. Test-driven design. Read Pages 70-72 in Python book.
Read Wiki page on TDDExternal link
Read Programming suggestions
Wed Jan 30 Sorting. Tuples, and strings. Deep and shallow copies. Dictionaries. Pages 72-83.
Fri Feb 1 Assignment 04 Circuits and Spanning Trees
Mon Feb 4 Sets, dynamic programming. Read Pages 88-99 in Python book.
Wed Feb 6 Recursion

Read Pages 100-110 in Python book.

Fri Feb 8 Assignment 05 KWIC index
Mon Feb 11 Shelves, file I/O, keyword arguments Read Pages 112-123 in Python book.
Wed Feb 13 DRY. Doc comments. Functional programming. Quicksort. Read Pages 127-137 in Python book.
Fri Feb 15 Assignment 06 Battleship
Mon Feb 18 Object-oriented programming. Agile Programming and eXtreme Programming. Read Pages 141-152 in Python book.
Example bags.py (Example from class)
Wed Feb 20 Comparison of Python and Java. Read Python to Java
Fri Feb 22 Assignment 07 Jigsaw Puzzle
Software jigsaw.zip
More information JigsawPuzzle structure
Mon Feb 25 Using the debugger. Style. More Java/Python comparisons. Read Concise Guide to Python 2
Wed Feb 27 Midterm exam  
Fri Mar 1 No lab Friday March 1.
Mon Mar 4 Spring break; no classes
Wed Mar 6
Mon Mar 11 Discussion of exam Read JUnit for Java
Read Java syntax (reference), especially
print statements, printf statements, and Scanner.
Wed Mar 13 PowerPoint Sudden Java

More information LineReader.java
More information LibraryTests.zip

Fri Mar 15 Assignment 08 Pig
Mon Mar 18 PowerPoint Class Structure
PowerPoint Polymorphism
 
Wed Mar 20 PowerPoint JUnit testing More information SimpleIO.java
Fri Mar 22 Assignment 09 Squarelotrons
More information SquarelotronMethods.java
More information squarelotron_tests.zip
Mon Mar 25 PowerPoint Swing  
Wed Mar 27 Swing, continued
PowerPoint Inner Classes
PowerPoint Abstract Classes
 
Fri Mar 29 Assignment 10 Magic Squares
Mon Apr 1 PowerPoint Simple I/O
PowerPoint Exceptions
 
Wed Apr 3

PowerPoint Extreme Programming
PowerPoint More About Classes

 

Fri Apr 5 Assignment 11 Cryptograms
Mon Apr 8 PowerPoint MVC
PowerPoint Threads
 
Wed Apr 10 PowerPoint Animation
PowerPoint Comments
 
Fri Apr 12 Assignment 12 Snipe
Mon Apr 15 PowerPoint Uncommon Syntax
PowerPoint Java Bits and Pieces
Read Object-Oriented Concepts
Wed Apr 17 PowerPointIntroduction to Collections  
Fri Apr 19   No lab this week. However, this would be a good time to work with your partner on the final assignment.
Mon Apr 22 PowerPoint Java O-O Summary
PowerPoint Style Summary
 
Mon May 6 Final Exam 12:00 noon to 2:00pm.
Levine 101 (Wu & Chen).
Exam will cover Java and programming concepts, but not Python syntax.

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