CPSC 225 Intermediate Programming Spring 2014

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: Lab exercises are intended to provide practice and reinforce specific concepts from class. A few labs will introduce new material. It is intended that you will be able to complete most of the lab during the lab period, if you come to lab prepared (read through the handout, be familiar with the material) and give the assignment your full attention during lab. Anything not completed during lab must be finished outside of class.

Programming Assignments: Programming assignments provide an opportunity to work on larger programs, and to practice going from specifications to a working program. Programming assignments will typically be two- or three-week assignments, and will be the bulk of the out-of-class work for this course.

Exams: There will be three 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: 33% (2.75% each)
  • Programming Assignments: 40% (8% each)
  • Exams: 15% (5% each)
  • Final Project: 12%

More than three absences (for any reason) will lower your final grade, and more than seven absences (for any reason) may result in failure in the course. The number of unexcused absences will be taken into account when considering borderline final grades.

You are also 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. 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.


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

Labs, programming assignments, and projects will be graded on a combination of functionality (does the program run, and does it do what it should?) and style (which includes readability, commenting, clarity, and design).

syntax
  • Does the program compile? These points are all or nothing - either the program compiles, or it doesn't.
functionality
  • 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.
robustness
  • 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?
design
  • Are appropriate types chosen for variables? Is the division of code into subroutines, methods, and classes appropriate? Are constants used when they should be?
commenting
  • 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?
readability
  • 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?
clarity
  • Is the algorithm simple, 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.

The most useful resources for this course are the instructor (during lab, during office hours, and dropping by or scheduling a meeting) and the department's TAs (available many evenings in the Lansing 310 computer lab). These should be your first stops if you are having trouble with course material. 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. See the CTL statement below.


Center for Teaching and Learning (CTL)

At Hobart and William Smith Colleges, we encourage you to learn collaboratively and to seek the resources that will enable you to succeed. The Center for Teaching and Learning (CTL) is one of those resources: CTL programs and staff help you engage with your learning, accomplish the tasks before you, enhance your thinking and skills, and empower you to do your best. Resources at CTL are many: Study Mentors help you find your time and manage your responsibilities, Writing Fellows help you think well on paper, and professional staff help you assess academic needs.

I encourage you to explore these and other CTL resources designed to encourage your very best work. 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.

The CTL resource most useful for this class is the Study Mentors program:

Study Mentors
The CTL resource especially valuable to students either just starting college OR adjusting to the demands of their choice of Major is the Study Mentors program. 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 Sam Vann at vann@hws.edu, or drop in at the CTL office on the 2nd floor of the library.

Valid HTML 4.01!