CPSC 225 Intermediate Programming Spring 2016

CPSC 225 Assessment

On this page:

Assignments and Evaluation

Readings: Readings are the first introduction for most material. There is not a great deal of reading, and it is expected that you will do what is assigned. Some material in the assigned readings may not get covered in class.

Labs: Labs will be small-group exercises to explore, practice, and reinforce ideas from class. Some labs may introduce specific software or packages. Labs should generally be completed during the lab period; anything not completed during lab must be finished outside of class. Labs will be due on Fridays.

Programming Assigments: The programming assignments (along with the final project) constitute the bulk of the out-of-class work for this course. The programming assignments provide an opportunity to work on larger programs, practice going from specifications to a working program, and apply the course material.

Exams: There will be two midterm exams. These will be in-class, written exams. The dates and times of the exams are noted on the syllabus - be sure to consult this schedule before making travel arrangements! More details about each exam will be announced prior to the exam.

Final Project: There will be a final project instead of a final exam. It will be due at the end of the registrar-scheduled final exam time slot. More details about the project will be announced later in the semester.

Final Grades: Final grades will be computed as follows:

  • Labs: 21% (1.5% each)
  • Programming Assignments: 50% (11.5% each, with one mini-assignment worth 4%)
  • Exams: 12% (6% each)
  • Final Project: 17%

Participation: You are expected to participate in class. This does not mean that you have to volunteer for everything, but you should be actively engaged in class - i.e. you are paying attention and contribute meaningfully to the class on a regular basis, and you are on task and contributing to the group during in-class group activities. You should not hesitate to ask questions about the course material, either in class or outside of class via email or office hours - if you remain confused about something, it will make the next topic that much harder. Class participation will be taken into account when considering borderline final grades.

Extra Credit: Some extra credit opportunities may be available on programming assignments and the final project. Another avenue for extra credit is attending colloquium talks (see below). If you are interested in extra credit, take advantage of these opportunities!

Talks: The Math/CS Department sponsors a number of colloquium talks from faculty, alumni, and visitors during the semester. These talks are a great way to find out about a variety of topics in the fields of mathematics and computer science. You can earn extra credit for attending talks relevant to computer science - this includes computer-science-themed math/CS colloquium talks, as well as any other talk given on campus that is relevant to computer science. (Feel free to suggest talks that might qualify.) To get credit for attending a talk, you must be present at the talk and must submit a three-paragraph writeup of the talk: one paragraph summarizing the talk, one paragraph discussing what you learned from the talk, and one paragraph explaining why the talk is relevant to computer science. Writeups are due within one week of the talk. Writeups which are clearly written, substantive, contain the three paragraphs listed, and make a strong case for the relevance of the talk to the course will earn full credit. A maximum of four talks (for a total of 1% of the final grade) will be counted for extra credit.


You are expected to attend and be on time for all class and lab sessions, and it is your responsibility to make sure that you sign the attendance sheet each day. Late arrivals or early departures may be marked as absent.

Attending and participating in class (and especially lab) is an important part of your experience in this course. For that reason, if you have more than three absences (whether excused or unexcused) in class and/or lab, your final grade will be lowered by 3.3% (1/3 of a letter grade) per unexcused absence. More than seven absences (whether excused or unexcused) is grounds for failure in the course - see me as soon as possible if a major illness or emergency means that you will miss multiple days of class in a row.

Excused absences include absences due to sports competitions, official Colleges activities such as musical performances or debate competitions, academically-related events such as attending a conference, religious observances, illness, or personal or family emergencies. A reason must be provided in order for such an absence to be counted as an excused absence.

Missing class for other reasons - such as being too busy, oversleeping, or leaving early for a vacation - is considered to be an unexcused absence. Any absence for which no reason is provided is automatically considered to be unexcused.

Late Policy, Extensions, and Rescheduling Exams

If something comes up and you can't get an assignment completed on time, you may turn it in late for reduced credit. Labs and programming assignments will be penalized 5% if turned in by midnight on the due date and 10% per day or part of day thereafter up to a maximum deduction of 40%. Getting things in on time is best, but late is better than never!

Extensions will only be granted for the kinds of things that count as excused absences, and generally only if a significant portion of the time allocated for the assignment is affected. If you miss lab due to an excused absence, you may request an extension allowing you to turn in the lab by the start of the next lab period without penalty. (This is expected to be a rare occurrence, and repeat requests may be denied.) Note that leaving early for a vacation, being busy, or having a bunch of assignments due at the same time are not considered reasons for extensions. Save often and make backups of your files - computer failures do occur and are generally not grounds for an extension. Similarly, exams can only be rescheduled if you will have an excused absence on that day.

Arrangements for extensions or rescheduled exams must be made as far in advance of the deadline or exam date as is feasible - don't wait until the day before a team trip which has been scheduled for weeks to begin to make arrangements! In addition, it is the student's responsibility to ensure that there are actual arrangements in place - simply sending an email notification about an upcoming absence does not constitute "arrangements".

No work will be accepted after the end of the Registrar-scheduled final exam time slot.

Making Up Work

Students are responsible for acquiring any notes, handouts, assignments, and other material missed as the result of an absence, whether excused or unexcused. This should be done promptly to avoid falling behind.

Every effort should be made to hand assignments in on time, even if you are absent from class that day. If a last-minute emergency prevents you from handing in completed work on time, the assignment will be accepted late without penalty only if arrangements are made as soon as possible to get the assignment handed in. If you need more time to complete the assignment, arrangements for an extension must generally be made in advance of the deadline - start on assignments early!

Exams can only be made up if the absence is excused and not foreseeable (e.g. illness or other last-minute emergency). (For foreseeable excused absences, such as a scheduled sports competition, arrangements for rescheduling the exam must be made in advance.) In addition, documentation from an appropriate person (such as a dean) is required to validate the excuse.

Coding Standards

Following reasonable conventions is important for readability of your code. The course coding standards specify the particular conventions you should use in this course. You will be graded on how well your programs adhere to these standards.

Programming Rubric

Programs will be assessed on both functionality (does the program run, and does it do what it should?) and style (which includes readability, commenting, clarity, and design). Specific points I will be looking for:

  • Does the program compile? In most cases, a program that doesn't compile will earn few or no points, no matter how complete or beautiful the rest of the code may be. Fix syntax problems as you go, and comment out or remove anything that you might have started to add but didn't complete.
  • Does the program do what it is supposed to? This means that it has all of the required features, and that it works correctly when the user uses it correctly.
  • Does the program gracefully handle unexpected or incorrect user input in all cases? Crashing with an uncaught exception or cryptic error message is not considered graceful.
  • Are preconditions (and where appropriate, postconditions) checked and violations appropriately handled?
  • Is the division of code into subroutines, methods, and classes appropriate?
  • Are appropriate ADTs chosen? Are appropriate implementations used for those ADTs?
  • Are appropriate types chosen for variables?
  • Are constants used when they should be?
  • Are comments present for all class, subroutine/method, and variable declarations and, when appropriate, for individual blocks of code?
  • Do comments contain useful information without also including unnecessary information?
  • Are comments in Javadoc notation?
  • Are naming conventions followed?
  • Are the chosen names appropriate?
  • Is whitespace used to enhance readability?
  • Is indentation used appropriately and consistently?
  • Are lines broken before reaching 80 characters?
  • Are things done in a simple and straightforward manner, or was a simple problem solved in a very convoluted way?

Being Successful

Programming can be a lot of fun (and it's great to be able to point to something you created), but it can also be challenging to learn. Here are a few tips:

  • You have to memorize the syntax and semantics of each programming construct. This is akin to memorizing vocabulary when learning a foreign language - you can't express yourself without having the vocabulary, and the computer doesn't allow any room for error. (Note that this doesn't demand that you always write programs without error - but you need to know the correct syntax and semantics in order to understand and fix errors that arise.)

  • Practice is essential. Skipping an assignment means that you haven't had as much exposure to the topic. Since later material often builds on earlier material, this means you'll have more trouble on the next assignment.

  • Budget your time carefully. Practice takes time, especially as you are learning new things. Assignments are constructed to be as short as possible while still providing necessary practice, but you should expect to spend a substantial amount of time on this course. Start on assignments early and plan to spend some time each day working on them - waiting until the night before something is due will make you very sad!

  • Get help when you need it. Odds are good that you'll get stuck at least once during this course - not because things are deliberately left out in order to stump you, but because Java is too big to hope to cover every kind of error or problem that you might possibly run into in advance. (It also doesn't help that the computer demands absolute correctness and tells you immediately if something is wrong.) Syntax errors are a common source of "impossible" problems - the compiler error messages don't always make a lot of sense unless you know what the correct syntax is. What to do? Spend some time trying to solve the problem yourself, but then recognize when you are stuck and don't be shy about asking for help. (Also, try to avoid randomly making changes in the hopes of fixing the problem - get help understanding the problem, then fix it.) This is also a good reason to work on assignments before the last minute - so you have time to get help when you get stuck.

Need Help?

If you are having trouble with the course material or get stuck on a problem you can't figure out how to solve, don't just ignore it! The course material is cumulative, and skipping a difficult topic will make it harder to be successful with the next.

Your first resource should be the instructor - ask questions during class and lab, stop by office hours, send email, or drop by or schedule a meeting.

CS Teaching Fellows are available 7-10pm Sun-Thu; they are not specifically hired to support this course, but should be able to help you with debugging or thinking through logic. Note that assignment-specific questions are best directed to the instructor.

For more general help, such as with writing, study skills, or time management, the Center for Teaching and Learning (CTL) also has resources to help you. You can talk with me about these resources, visit the CTL office on the 2nd floor of the library to discuss options with the staff, or visit the CTL website. Of most relevance to this course is the Study Mentors program. This program is especially valuable to students just starting college or adjusting to the demands of their choice of major, but all students can benefit. Study Mentors engage directly with each student in the process of adjusting to new academic demands: they help you find the time you need to engage with both your academic and co-curricular activities, accomplish the tasks in front of you, and enhance your reading and study time. Study Mentors may be especially important for those of you who are involved in many activities; work on or off campus; are studying for Teaching Certification, graduate school exams, or prepping for fellowships; or who have one or more unusually demanding courses on your schedule. To meet with a Study Mentor, one option is to go to the TutorTrac link provided on the CTL webpage and make an appointment. You can also contact Ingrid Keenan, x3832, keenan@hws.edu, or drop in at the CTL office on the 2nd floor of the library.

Valid HTML 4.01!