Skip to main content area Skip to institutional navigation Skip to sub-navigation

Computer Science

Applicable for the 2014-2015 academic year.

Computer Science Website

Professor JANKE; Visiting Assistant Professor WHITEHEAD

The Department of Mathematics and Computer Science offers a major in computer science; computer science courses are designated by CP. For details about the mathematics major and a list of mathematics (MA) courses, see the listing under mathematics elsewhere in the catalog.

Major Requirements

In addition to the general college requirements, a major in computer science must complete:

  • CP122 (Computer Science 1), MA126 (Calculus 1) and MA129 (Calculus 2)
  • CP222 (Computer Science 2), and either MA201 (Discrete Math), or MA251 (Number Theory): a student should complete these before declaring the major
  • CP215 (Applications Design) and CP275 (Computer Organization) 
  • one unit from CP342 (Distributed Systems) and CP344 (Database Systems);
  • one unit from CP360 (Computer Graphics), CP365 (Artificial Intelligence), and CP341 (Special Topics);
  • CP405 (Theory of Computation) and CP407 (Analysis of Algorithms).

A student majoring in  Computer Science must also:

  • Attend at least four departmental seminars or department-approved talks after declaring the major, and submit a one-page summary of each to the Dept Chairperson within two weeks of the seminar. This should be completed by the end of Block 7 of the student's senior year. Need help with your Seminar Writeups? Download our helpful Seminar Writeup handout to get a better idea of what is expected in your summaries.
  • Complete the Computer Science Senior Project (revised September 2013)
    As of the 2013-2014 academic year, the computer science major now includes a required senior project.  Students starting at CC during the 2013-2014 school year or after must fulfill this senior project requirement.  Current declared majors are not required to complete a project, but strongly encouraged to consider it. 

Senior Project:

  1. You must take CP499 during your senior year. It can be in any block, but check with your advisor.
  2. You should consult with your advisor regarding the project late in your junior year or early in your senior year. 
  3. By the end of the second block of your senior year, you must submit a project proposal consisting of about one page outlining the project.  You should include a rough schedule of your proposed work over the year.  Completed projects are due in block 7.
  4. All projects should be centered on developing a substantial computer program.  The focus can be applied or theoretical, but in all cases you should include some discussion of how your specific work fits into the larger development of computer science.  This probably means investigating how theory affects your applied project or how applications will evolve out of your theoretical work.
  5. Your program should be well-documented and include sections detailing:
    1. User Interface
    2. Software engineering (Languages, Frameworks, and API’s you chose.)
    3. Main algorithms (including whatever analysis seems appropriate.)
    4. Testing (a test plan should be developed early.)
    5. Debugging
  6. A medium length (6 – 8 pages) paper should accompany your program.  This paper should be written for an audience of other computer science majors.  For example, you don't need to define what a b-tree is, but you would need to describe how you modified it to work with the graph-based DBMS you are designing.  The tone of your paper should be academic/formal.  You will need to write multiple drafts of your paper, spend a considerable amount of time proofreading, and it would be beneficial to get outside advice from your advisor, other faculty members, or the CC writing center.  The paper should be polished enough at the end to submit to an undergraduate conference.
  7. You may decide to present your work publicly in a seminar during block 7.  Taking this opportunity is highly encouraged as it is a good chance to talk about your ideas with your peers and other Math/CS faculty.

To be eligible for Distinction in Computer Science, see the CS Distinction Requirements page.

Minor Requirements

To minor in computer science, a student must complete each of the following:

  • CP222CP215, and CP275;
  • Two additional units of computer science at the 300 or 400 level;
  • Obtain approval of the choice of courses from a member of the Mathematics and Computer Science Department.


Computer Science

CP115 Computational Thinking

Introduction to the encoding of information as data and the automation of quantitative reasoning with computer programs. This course covers the basics of the Python programming language with examples drawn from many fields (e.g. chemistry, biology, linguistics, art, music). This is the first course for those interested in computer science. Meets the Critical Perspectives: Quantitative Reasoning requirement.

1 unit — Burge, Whitehead, Ylvisaker

CP122 Computer Science I

Introduction to algorithms and data structures, and the design of computer programs using the programming language Java. This course requires some experience in programming. Meets the Critical Perspectives: Quantitative Reasoning requirement.

Prerequisite: Computer Science 115 or consent of instructor.

1 unit — Elmsallati, Whitehead

CP222 Computer Science II

Examination of algorithms for searching, sorting, and manipulation of data structures. Exploration of queues, stacks, trees, and graphs using a variety of design techniques including recursion and object-oriented programming. Meets the Critical Perspectives: Quantitative Reasoning requirement.

Prerequisite: Computer Science 122.

1 unit — Janke, Whitehead

CP241 Topics in Computer Science:

Special topics in computer science not offered on a regular basis (Not offered 2016-17).

1 unit

CP248 Introduction to Robotics

Construction and programming of a small robot over the course of a semester. Introduction to algorithms and techniques for navigation, planning, and error correction.

Prerequisite: Computer Science 122.

.5 unit — Janke, Whitehead

CP255 Independent Study:

Prerequisite: consent of instructor.

1 unit — Whitehead

CP274 Software Design

Fundamentals of design and implementation of 'real world' software. Topics include testing, databases, networking, user interfaces, collaborative development practices, and software specifications.

Prerequisite: Computer Science 222.

1 unit — Burge

CP275 Computer Organization

Exploration of the design and organization of computer processors, memory, and operating systems. Topics include processor architecture, digital circuits, memory management, scheduling, file systems, assembly language, and peripheral device control.

Prerequisite: Computer Science 222.

1 unit — Ylvisaker

CP341 Topics in Computer Science

Special topics in computer science not offered on a regular basis.

Prerequisite: Computer Science 215, Computer Science 222, Computer Science 275.

1 unit — Burge, Koo, Ylvisaker

CP342 Distributed Systems

Fundamentals of network design and interaction of computing systems. Topics include network protocols, security, synchronization, transactions, and network programming. Bredin. (Not offered 2016-17).

Prerequisite: Computer Science 274 and Computer Science 275.

1 unit

CP344 Database Systems

Introduction to data base management systems including the design, implementation, and analysis of data bases. Topics include relational models, concurrent access, data mining, and SQL programming. (Not offered 2016-17).

Prerequisite: Computer Science 274 and Computer Science 275.

1 unit

CP355 Independent Study:

Prerequisite: Computer Science 215, Computer Science 222, Computer Science 275.

1 unit — Whitehead, Ylvisaker

CP360 Computer Graphics

Introduction to the algorithms and theory necessary for producing graphic images with the computer. Topics include perspective, projection, hidden line removal, curve design, fractal images, shading, and some animation. (Not offered 2016-17).

Prerequisite: Computer Science 274 and Computer Science 275.

1 unit

CP365 Artificial Intelligence

An introduction to the theories and methods of artificial intelligence. Topics include problem solving, game playing, knowledge representation, natural language understanding, and expert systems.

Prerequisite: Computer Science 274 and Computer Science 275.

1 unit — Whitehead

CP398 Seminar in Computer Science

A semester-long study based on journal articles in computer science or on problems selected by the instructor. Topics will be chosen based on interest and accessibility, and there will be some writing and presentation of material. May be repeated for a total of 1 unit. (Not offered 2016-17).

Prerequisite: Computer Science 275 & consent of instructor.

.5 unit

CP405 Theory of Computation

Examination of the logical basis of computation. Topics include automata theory, Turing machines, time complexity, and space complexity theory.

Prerequisite: Any 300-level Computer Science course.

1 unit — Whitehead

CP407 Analysis of Algorithms

Investigation of the efficiency and design of algorithms including order estimates, complexity, and NP problems.

Prerequisite: Any 300-level Computer Science course.

1 unit — Ylvisaker

CP499 Senior Project

Software project in computer science approved by the student’s advisor. Students design, document, implement, and test a long-term software project. Required for majors in computer science.

Prerequisite: Computer science major, senior standing. Computer Science 215, Computer Science 222, Computer Science 275.

1 unit — Burge, Whitehead, Ylvisaker