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

We cover Scala for about half the course, then transition to Java. The following schedule is tentative, subject to modification without notice as events warrant.

Got a question? Ask it here!

Date Announcements
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 (optional, for students with little or no programming background) Thursdays 6:00-7:30pm Towne 313
 Office hours
Piazza (For fastest response, try here first!) Always open, 24/7  

Whenever my door is open.
Specific office hours: 3:00-4:30 Tuesdays and Thursdays
Levine 162
TA Emily Boggs, 1:30-2:30 Wednesdays Lounge area outside Towne 303
TA Chauncey Wang 11-12 Wednesdays Moore 207
Search Dave's web sites:
Last year's CIT591
Academic Integrity Policy
Textbook and Clicker
MCIT schedule
Java version test page
Java Syntax Pages (online)
or as a downloadable .zip file
Eclipse FAQ and Eclipse Tips
Software SwingExamples.jar
Academic resources

Date Lectures Readings, Assignments, etc.
Aug 28 PowerPoint Introduction to CIT 591
PowerPoint Instant Scala
Install Scala
Read Atomic Scala, pp 35-67
Aug 30 Assignment 00-warm-up-exercises.html. Not to be turned in!
Example Example program: lunar-lander.html
Assignment 01-hammurabi.html
Sept 2 Labor day--no class  
Sept 4 PowerPoint Numbers
PowerPoint Scripts and programs
PowerPoint Methods
Read pp 68-82
Sept 6   Assignment 02-number-personalities.html
Sept 9 PowerPoint Scala API
PowerPoint Classes and objects
pp 83-100
Sept 11 Fun with Pair Programming external link
PowerPoint Formatting strings
pp 101-129
Sept 13 Here are my versions of Card.scala, CardDeck.scala, Bid.scala, and BidTest.scala. Assignment 03-opening-bid-in-bridge.html
More information Bid.scala
Sept 16 Course selection period ends
Quiz #1
Sept 18

PowerPoint Sequences and for loops

pp 130-154
Example Pig.scala
Sept 20
Assignment 04-play-hand-of-bridge.html
Sept 23

PowerPoint Pattern Matching (Now! With more slides!)

pp 156-165
Sept 25

PowerPoint Parameters (to classes and methods)
PowerPoint Functions

pp 166-182
Sept 27 Here are my versions of Lojban.scala, SentenceGenerator.scala, SentenceRecognizer.scala, SentenceGeneratorTest.scala, and SentenceRecognizerTest.scala Assignment 05-lojban.html
More information Lojban notes
Sept 30 PowerPoint Scalatest
PowerPoint Style rules
PowerPoint Extreme programming
pp 183-201
Oct 2 PowerPoint Classes and objects

pp 202-234
Oct 4   Assignment 06-cryptograms.html
Oct 7

PowerPoint File I/O
PowerPoint Recursion

pp 235-261
(Skip Reflections, pp 262-264)
Oct 9

PowerPoint Functions and methods

pp 265-293
Oct 11 Fall break  
Oct 14 PowerPoint Classes, objects, traits
PowerPoint Miscellany
pp 294-317
Oct 16 Read A Concise Guide to Scala GUIs pp 318-372
Oct 18 Here's source code for SimpleGui.scala, Dart.scala, and Canvas.scala. Assignment 07-mastermind.html
Oct 21 Quiz #2  
Oct 23 PowerPoint Java for Scala Programmers  
Oct 25   Assignment 08-squarelotron.html
Oct 28 PowerPoint Class structure  
Oct 30

PowerPoint JUnit testing
PowerPoint Polymorphism

Nov 1   Assignment 09-library.html
Read Ten Ways to Kill Pair Programming external link
Nov 4 PowerPoint Inner classes
PowerPoint Abstract classes
Nov 6 PowerPoint Exceptions
PowerPoint Java I/O
Nov 8   Assignment 10-battleship.html
Nov 11 PowerPoint Collections
PowerPoint Generics

Nov 13 PowerPoint Swing
Nov 15   Assignment 11-calculator.html
Nov 18 PowerPoint Animation
PowerPoint MVC
Nov 20 PowerPoint Comments
PowerPoint More about classes
Nov 22   Assignment 12-frogger.html
Nov 25 PowerPoint Java bits and pieces
PowerPoint Namespaces, Scope, Access
PowerPoint Enums

Nov 27 Day before Thanksgiving (No class)  
Nov 29 Thanksgiving break--No lab  
Dec 2 PowerPoint Numbers
PowerPoint Strings and StringBuilders
Dec 4 PowerPoint Regular Expressions  
Dec 6 No lab  
Dec 9 PowerPoint Java O-O summary
PowerPoint Style summary
Dec 16

Final Exam, 3pm-5pm
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