Passing a CS Course by Exam

As indicated in the HMC catalog, a student may satisfy a course by ‘excellence’ on an exam (where ‘exam’ could mean an actual test or project or a combination of both). There are two possible positive results for such an action.

  • The student may both fulfill the requirement for that course and receive corresponding unit credit. For example, doing all the homeworks and doing well on the exam in CS X may both fulfill the CS X requirement and provide 3 unit credits. This shows up on the transcript as “EX” in the grade column. The student gets the units towards graduation, but there is no grade filed and the units are therefore not factored into the student’s GPA.
  • The student may only fulfill the course requirement. In this case, no unit credit is received but the requirement for this course is waived (e.g. if the course is required for the major). This is listed as a “WV” within the registrar’s internal records, but does not appear at all on the student’s transcripts.

In general, the Department of Computer Science feels that “placing out” of courses is appropriate only when a student has such extensive previous academic or practical experience with the material that a review would not be a productive use of their time. Such situations are rare.

Petitions to place out of upper-level CS courses based on prior experience should be submitted to the chair of the computer science department. Specific rules for placing out of courses in the introductory sequence (CS 5, CS 60, and CS 70) appear below; for CS 60 and 70, nontrivial work and significant advance notice are required.

 Advisors will jointly help the student plan a program tailored to the student’s interests and goals.

Placing out of CS5

Students cannot place out of CS 5, and the department does not waive the CS 5 requirement for CS 60.

“I’ve already taken Intro CS, so why can’t I jump directly to the next course?” The answer is that a substantial subset of topics and experiences in HMC’s CS 5 courses are not part of introductory CS paths elsewhere. For example, CS 5 includes (a) problem-solving in domain-specific languages (Picobot, JSFLAP), (b) truth tables, minterm expansion, and compositional digital design with logic gates, (c) problem-solving at the processor-instruction level (the Hmmm subset of all assembly languages), (d) finite-state machines and Turing machines (and, depending on the section, optimizing those machines for efficiency), and (e) uncomputability. These topics are not typical in introductory experiences and form a central, shared experience within the student-and-faculty CS community at HMC.

Placing out of CS60

Placing out of CS 60 requires nontrivial work and the process spans more than a semester. Specifically, placing out not only requires a student to take the final exam at its regularly scheduled time, but also to create and submit both a pre-final-exam portfolio and a post-final-exam portfolio. Only students whose home college is HMC may place out of CS 60.

  1. Before the start of the semester in which a student would like to proceed with the place-out process, the student submits a short petition to the department that declares their intention of placing out and explains the prior experience(s) that justify placing out. If the department agrees that the student’s prior experience(s) justify beginning the place-out process, a faculty liaison for the process will be assigned.
  2. By the midpoint of the semester in which the student begins the place-out process (i.e. before first half semester courses end), the student should submit to the faculty liaison a portfolio of Java and Racket projects they have authored. These can be academic, personal, or professional in nature, but should not include assignments from CS 60 (past or present offerings). The goal of this portfolio is to show such substantial prior knowledge and confidence with object-oriented programming, functional programming, and basic data structures such that even taking CS 60 as a review would not be worthwhile.
  3. After the portfolio is submitted and at least one week before course preregistration, a faculty member (typically the liaison) will meet with the student to ask questions about the portfolio and about CS 60 course topics. The purpose of this meeting, no longer than 20-30 minutes, is to ensure that taking the final exam will be a worthwhile effort for the student. If approved, students will be able to preregister—or if applicable, pre-place—for future CS courses under the presumption that they will have finished CS 60 before the start of the next semester.
  4. After getting approval for the portfolio and the oral exam, the student will take the regularly-scheduled final exam with the students in that semester’s CS 60 course.
  5. If the results on that exam demonstrate high proficiency, the liaison will ask for a post-final-exam portfolio, a subset of the assignments from CS 60, to be completed at least one week before the start of the following semester. The post final-exam portfolio ensures that some of the important shared experiences from CS 60 are also part of the passing-out student’s background.
  6. If the post-final exam portfolio is submitted on time and judged to be sufficient, the student will have passed out of CS 60 with a passed-by-exam grade and 3 HMC credit-hours.

Placing out of CS70

The process for placing out of CS 70 is very similar to the process of placing out of CS 60 above (in terms of timeline and milestones), with the details changed to match the difference in course content:

  1. Before the start of the semester in which a student would like to proceed with the place-out process, the student submits a short petition to the department that declares their intention of placing out and explains the experiences they have had through which they have become effective C++ programmers and effective pair programmers. The goals of this petition are twofold: first, to let the department know that a student is seeking to pass out, and second, the department will evaluate whether one of the central priorities of CS 70, effective pair-programming practice, is already part of the student’s background. If the department agrees that the student’s prior experience(s) justify beginning the place-out process, a faculty liaison for the process will be assigned.
  2. By the midpoint of the semester in which the student begins the place-out process (i.e. before first half semester courses end), the student should submit to the faculty liaison a portfolio of C++ projects they have authored. These can be academic, personal, or professional in nature, but should not include assignments from CS 70 (past or present offerings). The goal of this portfolio is to show such extensive prior experience with C++ and data structures such that even taking CS 70 as a review would not be worthwhile. Note that an important facet of CS 70 is professional programming testing, style, and documentation; these facets of the portfolio, too, will be considered.
  3. After the portfolio is submitted and at least one week before course preregistration, a faculty member (typically the liaison) will meet with the student to ask questions about the portfolio and about C++, about the data structures and asymptotic complexity covered in CS 70, and about other facets of professional programming practice that CS 70 emphasizes. The purpose of this meeting, no longer than 20-30 minutes, is to ensure that taking the final exam will be a worthwhile effort for the student. If approved, students will be able to preregister—or if applicable, pre-place—for future CS courses under the presumption that they will have finished CS 70 before the start of the next semester.
  4. After getting approval for the portfolio and the oral exam, the student will take the regularly-scheduled final exam with the students in that semester’s CS 70 course.
  5. If the results on that exam demonstrate high proficiency, the liaison will ask for a post-final-exam portfolio, a subset of the assignments from CS 70, to be completed at least one week before the start of the following semester. The reason for this post final-exam portfolio is to ensure that some of the important shared experiences from CS 70 are also part of the passing-out student’s background.
  6. If the post-final exam portfolio is submitted on time and judged to be sufficient, the student will have passed out of CS 70 with a passed-by-exam grade and 3 HMC credit-hours