CPSC 124 Introduction to Programming Spring 2011

CPSC 124 Assessment


Assignments and Evaluation

There are three components to successfully learning a topic: learning the fundamental concepts, practicing the application of those concepts, and demonstrating your mastery of the material.

Fundamentals: The first three components of the coursework emphasize fundamental concepts.

  • Readings: In computer science, one often begins to learn new things by reading about the topic - especially in conjunction with examples. Your first exposure to new topics will come the same way, via readings. Readings are due at the class period for which they are listed on the syllabus (i.e. they are to be done before class). These readings will be the starting point for class, so don't skip them! Assigned readings will be accompanied by reading guides; the purpose of the guides is to help you identify the important concepts to focus on and to help you learn how to read technical material.

  • Warmups: Assigned readings will also be accompanied by a short set of exercises ("warmups"). The warmups will address concepts covered in the reading, and are intended to get you thinking about what you've read and to determine what topics need more attention in class. Warmups are due by midnight before the class period for which the reading is assigned. Warmups cannot be handed in late or made up after the fact, but the three lowest scores will be dropped when computing the final grade.

  • 5 Minute Syntax Quizzes: When you are learning a foreign language, you can generally make yourself understood even if your grammar and spelling aren't perfect. With programming, however, syntax problems are deal-breakers - the computer won't run your program if there is even one error - and your progress will be greatly slowed if you are continually struggling over syntax. This means you should strive to memorize the correct syntax as quickly as possible. To this end, there will be about 10 short syntax quizzes. They will be given at the start of class, usually one or two class periods after a new construct is introduced. (Quizzes will be announced one class period in advance.) Syntax quizzes cannot be made up if you are late to class or miss class, but the lowest quiz score will be dropped when computing the final grade.

Practice: Programming is learned by doing, not just reading. The next components of the coursework emphasize actively applying the fundamental concepts.

  • Class Participation and Group Activities: Many class periods will involve working through examples, either as a class or in small groups. You are expected to contribute to these activities, by regularly asking questions or volunteering answers during class and by staying on task and contributing to your group's work during group activities. Note that being able to contribute meaningfully in class also means that you come to class prepared by having done the reading.

  • Labs: Weekly lab assignments are intended to give you practice integrating and applying the course material. The lab assignment will posted several days in advance of the lab - you should read through the handout before coming to lab, so you are ready to get started working right away. If you come to lab prepared, you should be able to make a good dent in the assignment during the lab period - but you will likely need to spend additional time outside of class to finish it. Lab assignments are generally due at the start of the lab session one week after they are assigned. Labs may be handed in late, but with a point penalty.

Mastery: The remaining coursework is geared towards demonstrating your mastery of the material.

  • Exams: There will be three exams - two in class during the term, and one hour-long exam in the registrar-scheduled final exam timeslot. All three will be written (no programming on the computer) and closed book/notes. Details on the material covered and the exact format of each exam will be announced prior to the exam. Written exams are a chance to demonstrate that you have mastered the fundamentals, and to show how you approach solving a problem.

  • Projects: Complementing the written exams, there will be three programming projects. These are more sizeable programs than the labs, and are intended to give you practice with skills needed when you create larger programs - as well as to demonstrate that you can produce a working program. (Projects really belong both under "Practice" and "Mastery" - they are a chance to practice skills as well, but in a more limited-help environment than the labs.) The final project will be due at the time of the final exam.

Final Grades: Final grades will be computed as follows:

  • Warmups: 10% (approx. 0.5% each)
  • Syntax Quizzes: 8% (approx. 0.9% each)
  • Class Participation and Group Activities: 9%
  • Labs: 38% (3.8% each)
  • Exams: 15% (5% each)
  • Projects: 20% (6.7% each)

  • Attendance: Each absence beyond three, regardless of whether it is excused or unexcused, will result in a deduction of 10% from the class participation grade.

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 up to 5% of the class participation grade per talk. A maximum of four talks 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.


Warmups Rubric

Warmups will be graded on a simple ✓, −, 0 scale:

  • all questions answered, and
  • shows evidence of trying to apply the reading to answer each question
Note that correct answers are not required to get a ✓, nor do correct answers alone ensure a ✓. Warmups are not reading comprehension quizzes - they are to get you to think about the material, and to determine what material needs more attention in class.
  • some questions answered, and
  • shows some evidence of trying to apply the reading to answer the questions (but not necessarily for all questions)
0
  • no questions answered, or
  • no evidence of applying the reading

The three lowest scores will be dropped. Letter grade equivalents will be approximately 90% ✓ = A, 75% ✓ = B, 60% ✓ = C, 50% ✓ = D. This assumes that the other scores are −; having 0s instead of −s will lower the grade.


Group Exercises Rubric

Group exercises will be graded on a simple ✓, −, 0 scale:

  • made reasonable progress, and
  • generally on the right track
  • insufficient progress, and/or
  • significantly off-track
0
  • very little or no progress, and
  • not much effort (not on task)

"Reasonable progress" is not meant to be a high bar, but rather one that is well within reach if you are prepared for class and work on the exercises during the allotted time.

Up to three 0s (corresponding to days with absences) will be dropped. Letter grade equivalents will be approximately 90% ✓ = A, 80% ✓ = B, 70% ✓ = C, 60% ✓ = D. This assumes that the other scores are −; having 0s instead of −s will lower the grade.


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. Blowing off warmups or skipping an assignment means that you haven't had as much exposure to the topic and, given the cumulative nature of the material, 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 - 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.)


Valid HTML 4.01!