CS 48, Spring 2018

Project Rules


Group formation

This quarter the instructor and TA will assist and partly direct the formation of groups. We will try to minimize the number of groups, subject to the restriction that no group may have more than 5 nor fewer than 4 members.

Attendance is always important, but it is mandatory at your first discussion section, Friday, April 6. Otherwise you cannot be assigned to a group.

All remaining rules apply after the groups are formed.

Type of project to choose

CS 48 is mostly about analyzing problems and designing systems. It is not primarily about programming, at least not programming at the method or even class level. Therefore, what we are looking for in projects are problem domains that are "interesting" - i.e., have Suppose you have a choice between two projects, A and B:
Project A - GOOD Choice Project B - POOR Choice
Has many concepts with complex relationships between them, but each resulting class is simple to implement. Has fewer concepts, and classes are difficult to implement due to tricky algorithms and/or fancy graphics.

For CS 48, project A is a much better choice. A key goal is for you to learn how to analyze and design, and thus a major portion of your work on the project should be in that area.

Good news: you may choose any type of project you want.

We will approve almost any project idea that minds the rules on this page.

Programming language and other source code requirements

As CS 32 is a pre-requisite for this course, every enrolled student is assumed to possess sufficient C++ programming knowlege to be an effective team member if the project is mostly written in that language. Additionally, as CS 56 is another required course for CS majors, many students have or are gaining experience with the Java programming language and related libraries. Therefore, heed the following language requirement.

Programming language requirement
The bulk of your project must be implemented in C++ (2011 standard) or Java (SE 1.8). Another object-oriented language may only be used with explicit permission. Small, auxiliary parts may be composed in Javascript, Python or another scripting language if your TA approves it.

Additionally:

About technical expertise
The instructor and TAs will not assume responsibility for teaching you how to accomplish every possible programming task you need to learn - whether or not we are familiar with these tasks ourselves. A large part of a developer's job is to learn how to do things they have not been trained to do. You must research any techniques that are novel to you: find examples in books or by searching the Internet.

Grading guidelines

The project counts 75 percent of each student's course grade, broken down as follows:

About individual accountability
Near the end of the quarter, every student will be given an opportunity to submit a specific recommendation to reduce the Teamwork Credit of another member in their group. If a student submits no such recommendation, it means that student effectively recommends the full 25 percent be awarded to each other group member.

A special note about plagiarism:

All work that you submit must be entirely your own, or its origin must be properly credited. In other words, it is okay to borrow an idea from somewhere, but only if you tell us so. (Of course, if you borrow a substantial part of your design, your grade may be affected.)

Plagiarism is a very serious offense, and we are obligated to spend some effort trying to find it. If we detect it, the offending group's grade will be reduced by at least 40 percent even for minor infractions. For anything other than a minor infraction, the grade will be zero, and the students' behavior will be reported to the appropriate university authorities. According to university guidelines, "any act of academic dishonesty ... is unacceptable and will be met with disciplinary action".


Updated March 27, 2018 by C. Michael Costanzo
CS 48 homepage