Brief description: Introduction to the intellectual and software tools used to create and study algorithms: formal and informal problem specification; problem solving and algorithm design techniques; understanding the process of computation; impacts of computing systems on society; software reliability, formal verification, testing, and peer code review techniques; program clarity, complexity and efficiency; functional and imperative paradigms; associated programming skills.
Includes a required weekly one-hour lab meeting. Note that completion of the lab assignments and homework typically takes an additional 6-10 hours of work per week outside of the scheduled lab.
Prerequisite: None (students with prior programming experience may wish to take the placement test to start with a more advanced course).
Note that CMSC 231 Discrete Math is often taken in the same semester as either CMSC 105 or CMSC 106.
Haverford CMSC 105 is equivalent to Bryn Mawr's CMSC 113 - students may not receive credit for both.
CMSC 105/113 is often followed by CMSC 106: Introduction to Data Structures or Bryn Mawr's equivalent, CMSC 151.
Current-semester details such as instructor, schedule, syllabus, etc., are specific to each section.
Normally this course (and B113) is offered every semester, often with two offerings in the fall. (This search of the Haverford College Catalog may lead to useful information).
Labs make up a major and important portion of the work for this course. For due dates, please see information about the current semester. If lab assignments are visible in advance, note that modifications (including changing, cutting, or adding other labs) are sometimes made before they are officially assigned (a week or two before they are due), so any work done in advance is at your own risk.
Labwork should be done on the computers in the computer science "QuaCS" teaching lab, by going to the lab rooms (KINSC H110 or H204) or, one remote access has been discussed in class, by logging in remotely.
WARNING: some labs only run on the QuaCS computers, and copying the files has often led to students losing work, so please don't make copies unless the instructor has described how to do so properly via the "git" version-control system.
Though some specifics may vary by semester, this course normally includes content related to