Instructor: Bart Massey <bart@cs.pdx.edu>
TA: Kevin Dyer <kdyer@cs.pdx.edu>
Time: Tuesday/Thursday 18:40-20:30 (6:40-8:30 PM)
Place: Cinema Bldg room 92
CRN: 14441
URL: http://wiki.cs.pdx.edu/moodle/course/view.php?id=4
As always, this is a tentative syllabus. Everything here is subject to vast change with little notice.
CS 300 is a first course in engineering software. The fluent ability to write programs and a strong understanding of computing are necessary prerequisites: students must have completed PSU CS 202 or equivalent.
This course was taught in a somewhat different form in Summer 2009. It also was taught in a substantially different form in Winter 2007.
The catalog says: Practical techniques of program development for medium-scale software produced by individuals. Software development from problem specification through design, implementation, testing, and maintenance. The fundamental design techniques of step-wise refinement and data abstraction. A software project will be carried through the development cycle.
CS 300 is the first of two required project-oriented software engineering courses at PSU; the second is the Capstone course. CS 300 focuses on individual development of small-to-medium-scale programs: on the order of 5000 lines of code in a typical high-level language.
It turns out that even at these smallish scales, software development difficulty is not principally the effort of implementation. The vast bulk of effort is spent on understanding the problem to be solved, specifying the solution, designing the solution, validating that the problem has been solved properly, and maintaining the resulting system. CS 300 is intended to teach the principles and techniques behind these activities.
A principal focus of this offering of CS 300 is on open source software. The principles, techniques, and tools of open source are revolutionizing not just large-scale software development, but individual software development as well. Your instructor brings special expertise in this area, and will teach the comparisons and contrasts between classical and open-source approaches.
The catalog says: To train students in developing medium-scale software, and to give practice in such a project. The purpose is to prepare them for projects in subsequent courses such as CS 321. The catalog's list of course goals is that students be able to:
Seems like enough for 10 weeks.
This course is a high-effort essential part of the PSU undergraduate CS curriculum. There will be lectures, examinations, and a great deal of project-oriented homework.
The course website (see above) will be the focus of communication. Students are encouraged to contact the instructor any time by email for an appointment if there are things that seem worth discussing. Special and/or regular office hours will be instituted if demand warrants.
The course lectures will cover a variety of topics, and will include guest lectures. Please attend them all; they are required and should be useful.
Our TA has graciously agreed to hold office hours Tuesdays 15:30-17:00 and Thursdays 12:00-13:00 in the FAB "Fishbowl" lounge. This is a lot of office hours, so we may modify this downward depending on demand.
The course textbook
Object-Oriented & Classical Software Engineering (7th ed)
Stephen Schach
McGraw Hill
is available at the bookstore. The textbook will be followed only loosely, so the 6th edition should also be fine. There may also be additional readings as the course progesses.
The coursework will consist largely of a project to be performed over about 9 weeks. Students will be grouped into teams, but each student will be responsible for specific work, constituting design, development, testing and maintenance of several thousand lines of code. Assignments will consist of delivery and evaluation of milestone work products on the project; in addition, the project will receive a final overall grade.
Due to the size of the course and the volume of material to be covered, late assignments will not be accepted. A grade of 0 may be given to any assignment not turned in on time; failing any one assignment is grounds for failure in the course.
Currently, the CS laboratory facilities consist of 17 Linux machines in the Linux lab. However, work may be done on any of the Departmental UNIX or Linux boxes remotely, using the Windows lab machines or from home. Those with home or laptop UNIX / Linux boxes are encouraged to use them—make sure they're adequately backed up, though.
If you do something that violates the University's or the Department's Student Conduct code, there will be the most severe penalties I can manage. In particular, if you plagiarize (use other people's ideas, text, or code without acknowledgment) I will do what I can to end your academic career. If you have questions, please contact me for clarification.