Syllabus and general information for MCS-178: Introduction to Computer Science II (Fall 2009)

Overview

In this course, we will continue sampling the perspectives and methods of computer science. The main change from MCS-177 is a different perspective on computation. In MCS-177, we emphasized functions that computed output values from input values. The values themselves could be complex, but were unchanging. In MCS-178, by contrast, we will be emphasizing sequences of actions, many of which modify data objects.

Office hours

I will be available in my office (OHS 303) from 10:30-11:20 on Tuesdays, Wednesdays, Thursdays, and Fridays, as well as by appointment. Or try your luck: just stop by and see whether my door is open. You may send me electronic mail at max@gustavus.edu or call me at extension 7466. I'll try to put any updates to my office hours on my web page, so check there if in doubt.

World Wide Web

All course materials will be available through my World Wide Web page. The URL for this course is http://homepages.gac.edu/~mc28/F2009/. After this syllabus I will give hardcopy handouts only to those students who want them.

Texts

We will use two textbooks, both of which are available without charage on the web: Python for Software Design: How to Think Like a Computer Scientist, by Allen B. Downey, and Concrete Abstractions: An Introduction to Computer Science Using Scheme, by Max Hailperin, Barbara Kaiser, and Karl Knight. All programming will be done using Python; the readings from Concrete Abstractions need only be understood at a language-independent, conceptual level. Note that the free manuscript of Python for Sofware Design goes by its working title, Think Python.

Projects

In general we will meet in OHS 326 on Tuesdays and Thursdays to work on projects. Project 0 will be a warmup experience not requiring a project report; projects 1 through 6 will require reports.

Attendance is expected for all project work days. (If you turn in a report early, you are excused from the remaining days devoted to that project.) I will excuse up to two absences per student, for any reason. Use yours wisely. If you exceed this allowance, I may reduce your course grade by one letter grade.

Homework assignment policy

The syllabus shows due dates for six homework assignments. You must turn in all the problems in an assignment by that assignment's due date, but may turn in individual problems earlier if you wish. I will return each problem to you as quickly as I can, but normally with only an indication of whether it is acceptable or needs more work. The reason why I won't write much on the work I turn back to you is because I would like to talk with you face-to-face. If a problem needs more work, you should treat that as an invitation to come talk with me about it. Once you've done the additional work, you may turn the problem in again, attached to (or clearly marked on) the original. In fact, you may turn each problem in as many times as you like, until it is marked as acceptable. Your grade for the homework portion of the course will be based on the fraction of homework problems that you eventually did acceptably.

The final deadline for rewrites of homework problems is 12:30pm on October 5th for assignments 1-3, 12:30pm on November 6th for assignments 4 and 5, and 12:30pm on December 15th for assignment 6.

Unless I indicate that a particular problem must be done individually, you may work on any problem in a group of two or three students. One copy of the solution produced by the team should be turned in, with all team members' names on it. Write “we all contributed fairly to this solution” and have all team members sign under that statement.

Tests

There will be two intra-term tests as shown on the syllabus below and a final exam as scheduled by the registrar. If you have a conflict with a testing time, please contact me as soon as possible to make an alternative arrangement.

Exams will be closed-book and mostly closed-notes. You may, however, use a single 8 1/2 by 11 sheet of paper with hand-written notes for reference. (Both sides of the sheet are OK.)

Honor

Students are encouraged to discuss the course, including issues raised by the assignments. However, the solutions to assignments should be individual original work unless otherwise specified. If an assignment makes you realize you don't understand the material, ask a fellow student a question designed to improve your understanding, not one designed to get the assignment done. To do otherwise is to cheat yourself out of understanding, as well as to be intolerably dishonorable.

Any substantive contribution to your solution by another person or taken from a publication should be properly acknowledged in writing. Failure to do so is plagiarism and will necessitate disciplinary action.

The same standards regarding plagiarism apply to team projects as to the work of individuals, except that the author is now the entire team rather than an individual. Anything taken from a source outside the team should be be properly cited.

One additional issue that arises from the team authorship of project reports is that all team members must stand behind all reports bearing their names. All team members have quality assurance responsibility for the entire project. If there is irreconcilable disagreement within the team it is necessary to indicate as much in the report; this can be in the form of a “minority opinion” or “dissenting opinion” section where appropriate.

You are expected to be familiar with the college academic honesty honor code policy and to comply with that policy. If you have any questions about it, please ask.

Late project reports

All project reports are due at the beginning of class on the day indicated. Late reports will be penalized by 3 percentage points for each weekday late or fraction thereof.

If you are too sick to complete a report on time, you will not be penalized. Simply write “late due to illness” at the top of the report, sign your name and hand it in. Other circumstances will be evaluated on a case-by-case basis.

Grade changes

Please point out any arithmetic or clerical error I make in grading, and I will gladly fix it. You may also request reconsideration if I have been especially unjust.

Grading

The course components will contribute to your grade in the following proportion:

Please see me if you have any question how you stand. Class participation is not graded; however, it allows you to find and repair the gaps in your understanding before doing the assignments, and thus can dramatically improve your grade. You are responsible for all course material, whether or not you are present when it was covered or distributed.

Style guidelines

All assignments should be readily readable, and should not presuppose that I already know what you are trying to say. Use full English sentences where appropriate (namely almost everywhere) and clear diagrams, programs, etc. Remember that your goal is to communicate clearly, and that the appearance of these technical items plays a role in this communication process. Be sure your assignments are always stapled together and that your name is always on them.

Accessibility

If you have a learning, psychological, or physical disability for which a reasonable accommodation can be made, I would be happy to refer you to the college's disability services coordinator and to cooperate in the accommodation process. It is generally best if this can be done as soon as possible.

Syllabus

This schedule of topics is my best guess and is subject to change. Be sure to let me know if there are other topics you want to spend time on or if our pace needs to change. In the readings column, TP = Think Python (followed by chapter numbers) and CA = Concrete Abstractions (followed by section numbers). Recall that Think Python is also known as Python for Software Design.

DateReadingTopicDue
9/8Project 0: Warmup (day 1 of 3)
9/9TP1, TP2, TP3Variables, expressions, statements, and functions
9/10Project 0: Warmup (day 2 of 3)
9/11TP5, TP6Conditionals, recursion, and return values

9/14TP7, backgroundIteration and GusAirHW 1
9/15Project 0: Warmup (day 3 of 3)
9/16An ancient Chinese approximation of π
9/17Project 1: GusAir fixed pricing study (day 1 of 4)
9/18TP8, TP9Strings

9/21TP10Lists (in the Python sense)
9/22Project 1: GusAir fixed pricing study (day 2 of 4)
9/23CA12.2Memoization and dynamic programmingHW 2
9/24Project 1: GusAir fixed pricing study (day 3 of 4)
9/25CA12.3Memoization with two dimensions

9/28CA12.4Dynamic programming with two dimensionsHW 3
9/29Project 1: GusAir fixed pricing study (day 4 of 4)
9/30TP11, TP12Dictionaries and tuplesProject 1
10/1Project 2: GusAir dynamic pricing study (day 1 of 4)
10/2TP13, TP14Data structures and files

10/5Review, catch upHW 1-3 rewrites
10/6No class (attend Nobel Conference)
10/7No class (attend Nobel Conference)
10/8Project 2: GusAir dynamic pricing study (day 2 of 4)
10/9Test 1

10/12TP15, TP16Objects
10/13Project 2: GusAir dynamic pricing study (day 3 of 4)
10/14TP17Object-oriented programming
10/15Project 2: GusAir dynamic pricing study (day 4 of 4)
10/16CA13.2Shift/reduce parsing

10/19CA10.2EBNFProject 2
10/20Project 3: Parsing and interpretation (day 1 of 4)
10/21TP18InheritanceHW 4
10/22Project 3: Parsing and interpretation (day 2 of 4)
10/23Patterns of object composition, subtyping, and inheritance

10/26No class (reading day)
10/27No class (reading day)
10/28TP19Graphical user interfaces
10/29Project 3: Parsing and interpretation (day 3 of 4)
10/30CA14.5Adventures in the imaginary land of Gack

11/2More on the land of GackHW 5
11/3Project 3: Parsing and interpretation (day 4 of 4)
11/4More on GUIs and patternsProject 3
11/5Project 4: Adventures in the imaginary land of Gack (day 1 of 6)
11/6Review, catch-upHW 4-5 rewrites

11/9Test 2
11/10Project 4: Adventures in the imaginary land of Gack (day 2 of 6)
11/11Project 4: Adventures in the imaginary land of Gack (day 3 of 6, in lab)
11/12Project 4: Adventures in the imaginary land of Gack (day 4 of 6)
11/13Designing a GusAir demonstration application

11/16GusAir demonstration design, continued
11/17Project 4: Adventures in the imaginary land of Gack (day 5 of 6)
11/18Project 4: Adventures in the imaginary land of Gack (day 6 of 6, in lab)
11/19Project 5: GusAir demonstration (day 1 of 5)
11/20CA11.2The SLIM architecture

11/23CA11.3SLIM's instruction setProject 4
11/24Project 5: GusAir demonstration (day 2 of 5)
11/25No class (Thanksgiving)
11/26No class (Thanksgiving)
11/27No class (Thanksgiving)

11/30CA11.4Iteration in assembly language
12/1Project 5: GusAir demonstration (day 3 of 5)
12/2Project 5: GusAir demonstration (day 4 of 5, in lab)
12/3Project 5: GusAir demonstration (day 5 of 5)
12/4CA11.5Recursion in assembly languageProject 5

12/7Demonstrating the GusAir demonstrationsHW 6
12/8Project 6: Assembly language programming (day 1 of 4)
12/9Project 6: Assembly language programming (day 2 of 4, in lab)
12/10Project 6: Assembly language programming (day 3 of 4)
12/11Project 6: Assembly language programming (day 4 of 4, in lab)

12/14How similar is SLIM to real processors?
12/15Review and evaluationHW 6 rewrites, Project 6

Course web site: http://homepages.gac.edu/~mc28/F2009/
Instructor: Max Hailperin <max@gustavus.edu>