CIT 590: Programming Languages and Techniques, Fall 2017
(rivanov[aT]seas.upenn.edu), Levine 613
- Class: MW 4:30pm-6pm, Levine 101 (Wu & Chen)
- F 11am-1pm, Towne 321
- F 2pm-4pm, Towne 311
- F 3pm-4:30pm, Towne 315
- Teaching Assistants: Daniel Rosenberg (danmax[aT]seas.upenn.edu), Rubab Rehman (rrehman[aT]seas.upenn.edu), Wei-Yin Ko (kow[aT]seas.upenn.edu), Shuhong (Paula) Sun (shsun[aT]seas.upenn.edu), Yi Shang (yishang[aT]seas.upenn.edu), Sam Weinberg (wsam[aT]seas.upenn.edu)
- Office hours (depending on availability, TAs might move to different locations; an announcement will be sent before the session if the location is to be changed):
- Rado: MW 3-4pm (Levine 613)
- Danny: T 11-1pm (Weiss Tech)
- Rubab: MW 10:30-11:30 (Weiss Tech)
- Paula: TTh 10-11am (Weiss Tech)
- Sam: T 2-4pm (Weiss Tech)
- Yi: Th 1-3pm (Weiss Tech)
- Wei-Yin: W 11:30-1pm (Weiss Tech)
This course is an introduction to programming. We will spend about half of the semester on Python, and then we will switch to Java. This course is a bit more practice-oriented than a typical undergraduate intro to programming.
These books are entirely optional. I will not cover exactly the same material nor will I assign readings/homeworks from them. I am listing them here because they are an easy read for students who would like to supplement the lectures with additional reading:
- Homework (60%)
- Midterm Exam (20%)
- Final Exam (20%)
Unless otherwise noted, each assignment will be due
at midnight Tuesday. Each program will be worth 100
points. Late programs will be penalized 5 points per day, midnight to
midnight. Assignments which are late by more than 7 days will receive a score of 0.
- Homework 1 -- Lunar Lander [hw1.pdf]. Submit through Canvas by 11:59pm, Tuesday, September 12.
- Homework 2 -- Pig [hw2.pdf]. Submit through Canvas by 11:59pm, Tuesday, September 19.
- Homework 3 -- Three Musketeers [hw3.pdf, three_musketeers.py, three_musketeers_test.py]. Submit through Canvas by 11:59pm, Tuesday, September 26.
- Homework 4 -- Traveling Salesman [hw4.pdf, city-data.txt]. Submit through Canvas by 11:59pm, Tuesday, October 3.
- Homework 5 -- HTML Resumes [hw5.pdf, resume.txt, resume.html]. Submit through Canvas by 11:59pm, Thursday, October 19.
- Homework 6 -- Fractions [hw6.pdf]. Submit through Canvas by 11:59pm, Tuesday, October 31.
- Homework 7 -- Percolation [hw7.pdf]. Submit through Canvas by 11:59pm, Tuesday, November 7.
- Homework 8 -- Caesar Cypher [hw8.pdf]. Submit through Canvas by 11:59pm, Tuesday, November 14.
- Homework 9 -- Mad Libs [hw9.pdf]. Submit through Canvas by 11:59pm, Saturday, November 25.
- Homework 10 -- Battleship [hw10.pdf]. Submit through Canvas by 11:59pm, Tuesday, December 5.
- Aug. 30 -- course overview [slides], python demo [slides, helloWorld.py, startingFunctions.py].
- Sep. 6 -- python overview [slides, arithmetic.py, branching.py, forLoop.py, gcd.py, guessANumber.py, input.py, strings.py].
- Sep. 11 -- variables and values
[slides, precision.py], functions [slides, nestedFunctions.py, ifMain.py, scoping.py, global.py, defaultAndNamed.py], IDLE demo [slides]
- Sep. 13 -- unit testing [slides, TestStartFunctions.py, startingFunctions.py], errors [slides, sqrtException.py, exception.py]
- Sep. 18 -- collections [slides, lists.py, list_examples.py, divmodGcd.py]
- Sep. 20 -- loops [slides, range.py, break.py, continue.py, pass.py], math [slides], strings [slides, strings.py]
- Sep. 25 -- references [slides, callByValue.py, callByReference.py, stringParam.py, copyTypes.py]
- Sep. 27 -- files and I/O [slides, readFile.py, football.txt, football.py, forwards.txt]
- Oct. 2 -- classes [slides, personClass.py, callByValue.py, boring.py, employee.py]
- Oct. 4 -- garbage collection [slides], html [slides], plots [slides, simplePlot.py, multipleFigures.py, saveFig.py, myFig.png, principal.py]
- Oct. 9 -- basic data structures [slides, linkedList.py, queue.py, stack.py, tree.py]
- Oct. 11 -- review [slides, primeFactorization.py], past midterms [Exam 1, Exam 2, Exam 1 Solutions]
- Oct. 16 -- midterm [midterm.pdf]
- Oct. 18 -- go over midterm [midterm_solutions.pdf], intro to java [slides, oct_18.zip]
- Oct. 23 -- java overview [slides, oct_23.zip]
- Oct. 25 -- class structure [slides, oct_25.zip]
- Oct. 30 -- polymorphism [slides], JUnit [slides, oct_30.zip]
- Nov. 1 -- arrays [slides, nov_1.zip], strings [slides], Eclipse demo [slides]
- Nov. 6 -- exceptions [slides, nov_6.zip], errors [slides]
- Nov. 8 -- file i/o [slides, nov_8.zip]
- Nov. 13 -- abstract classes [slides, nov_13.zip], inner classes [slides]
- Nov. 15 -- collections [slides, nov_15.zip], generics [slides]
- Nov. 20 -- more about classes [slides], complexity [slides]
- Nov. 27 -- comments
- Nov. 29 -- analysis [slides], searching [slides]
- Dec. 4 -- hashing
- Dec. 6 -- comparisons
- Dec. 11 -- review [slides], practice exams [Exam 1, Exam 2]