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

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 304) from 1:30-2:20 on Tuesdays and Thursdays, from 11:30-12:20 Wednesdays, and from 10:30-11:20 on 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 sskulrat@gustavus.edu or call me at extension 7654. 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/S2010/. 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 charge 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. No programming will be done using Scheme; 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 March 5th for assignments 1-3, 12:30pm on April 14th for assignments 4 and 5, and 12:30pm on May 19th 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.

Date Reading Topic Due
2/8
TP1, TP2, TP3 Variables, expressions, statements, and functions
2/9

Project 0: Warmup (day 1 of 1)
2/10
TP5, TP6 Conditionals, recursion, and return values
2/11

Project 0: Warmup Part 2 (day 2 of 2)
2/12
TP7, background Iteration and GusAir HW 1

2/15

An ancient Chinese approximation of π
2/16

Project 1: GusAir fixed pricing study (day 1 of 4)
2/17
TP8, TP9 Strings
2/18

Project 1: GusAir fixed pricing study (day 2 of 4)
2/19
TP10 Lists (in the Python sense) HW 2

2/22
CA12.2 Memoization and dynamic programming
2/23

Project 1: GusAir fixed pricing study (day 3 of 4)
2/24
CA12.3 Memoization with two dimensions
2/25

Project 1: GusAir fixed pricing study (day 4 of 4)
2/26
CA12.4 Dynamic programming with two dimensions HW 3

3/1
TP11, TP12 Dictionaries and tuples Project 1
3/2

Project 2: GusAir dynamic pricing study (day 1 of 4)
3/3 TP13, TP14 Data structures and files
3/4
Project 2: GusAir dynamic pricing study (day 2 of 4)
3/5
Review, catch up HW 1-3 rewrites

3/8
Test 1
3/9
Project 2: GusAir dynamic pricing study (day 3 of 4)
3/10 TP15, TP16 Objects
3/11
Project 2: GusAir dynamic pricing study (day 4 of 4)
3/12 TP17 Object-oriented programming Project 2

3/15
CA13.2 Shift/reduce parsing
3/16
Project 3: Parsing and interpretation (day 1 of 4)
3/17 CA10.2 EBNF HW 4
3/18
Project 3: Parsing and interpretation (day 2 of 4)
3/19 TP18 Inheritance

3/22

Patterns of object composition, subtyping, and inheritance
3/23

Project 3: Parsing and interpretation (day 3 of 4)
3/24
TP19 Graphical user interfaces
3/25

Project 3: Parsing and interpretation (day 4 of 4)
3/26
CA14.5 Adventures in the imaginary land of Gack HW 5

3/27 - 4/5  SPRING BREAK

4/6

Project 4: Adventures in the imaginary land of Gack (day 1 of 6)
4/7

More on the land of Gack Project 3
4/8

Project 4: Adventures in the imaginary land of Gack (day 2 of 6)
4/9

More on GUIs and patterns

4/12

More on design patterns
4/13

Project 4: Adventures in the imaginary land of Gack (day 3 of 6)
4/14

Review, catch-up HW 4-5 rewrites
4/15

Project 4: Adventures in the imaginary land of Gack (day 4 of 6)
4/16

Test 2

4/19

Designing a GusAir demonstration application
4/20

Project 4: Adventures in the imaginary land of Gack (day 5 of 6)
4/21

GusAir demonstration design, continued
4/22

Project 4: Adventures in the imaginary land of Gack (day 6 of 6)
4/23

Project 5: GusAir demonstration (day 1 of 5)

4/26

Project 5: GusAir demonstration (day 2 of 5, in lab) Project 4
4/27

Project 5: GusAir demonstration (day 3 of 5)
4/28

Project 5: GusAir demonstration (day 4 of 5, in lab)
4/29

Project 5: GusAir demonstration (day 5 of 5)
4/30

Demonstrating the GusAir demonstrations

5/3
CA11.1-2 The SLIM architecture 
5/4

Project 6: Assembly language programming (day 1 of 4)
5/5
CA11.3 SLIM's instruction set Project 5
5/6

Project 6: Assembly language programming (day 2 of 4)
5/7
CA11.4 Iteration in assembly language

5/10
CA11.5 Recursion in assembly language
5/11

Project 6: Assembly language programming (day 3 of 4)
5/12

More on assembly language
HW 6
5/13

Project 6: Assembly language programming (day 4 of 4)
5/14

How similar is SLIM to real processors?

5/17

TBA

5/18

No Lab

5/19

Review and evaluation HW 6 rewrites, Project 6

Course web site: http://homepages.gac.edu/~mc28/S2010/
Instructor: San Skulrattanakulchai