The material on this page is from the 200102 catalog and may be out of date. Please check the current year's catalog for current information.
Mathematics and Computer Science: Courses in Computer Science

Courses 102. Computer Science II. A continuation of Computer Science I. The major emphasis of the course is on advanced program design concepts and techniques, and their application to the development of high quality software. Specific topics covered include the software development cycle, abstract datatypes, files, recursion, and objectoriented programming. Computer Science 101 and 102 provide a foundation for further study in computer science. Prerequisite(s): Computer Science 101. Enrollment limited to 25. S. Ross. 205. Discrete Structures. This course provides an introduction to logic, mathematical reasoning, and the discrete structures that are fundamental to computer science. Learning to reason effectively about discrete structures and, thereby, about the behavior of computer programs is the primary goal of the course. Learning to read and write clear and correct mathematical proofs is an important secondary aim. Specific topics include propositional and predicate logic, logic circuits, basic set theory, relations, functions, induction, recursion, and graph theory. Prerequisite(s) or Corequisite(s): Computer Science 101. Not open to students who have received credit for Mathematics s21. Open to firstyear students. D. Haines. 301. Algorithms. The course covers specific algorithms (e.g., searching, sorting, merging, numeric, and network algorithms), related data structures, an introduction to complexity theory (Onotation, the classes P and NP, NP complete problems, and intractable problems), and laboratory investigation of algorithm complexity and efficiency. Prerequisite(s) or Corequisite(s): Computer Science 102, and either Computer Science 205 or Mathematics s21. Staff. 302. Theory of Computation. A course in the theoretical foundations of computer science. Topics include finite automata and regular languages, pushdown automata and contextfree languages, Turing machines, computability and recursive functions, and complexity. Prerequisite(s): Computer Science 102, and either Computer Science 205 or Mathematics s21. D. Haines. 303. Principles of Computer Organization. Computer and processor architecture and organization including topics such as operating systems, buses, memory organization, addressing modes, instruction sets, input/output, control, synchronization, interrupts, multiprocessing, and multitasking. The course may include training in digital logic, machine language programming, and assembly language programming. Prerequisite(s) or Corequisite(s): Computer Science 102 and either Computer Science 205 or Mathematics s21. Not open to students who have received credit for Computer Science 201. S. Ross. 304. Principles of Programming Languages. An introduction to the major concepts and paradigms of contemporary programming languages. Concepts covered include procedural abstraction, data abstraction, tailrecursion, binding and scope, assignment, and generic operators. Paradigms covered include imperative (e.g., Pascal and C), functional (e.g., LISP), objectoriented (e.g., Smalltalk), and logic (e.g., Prolog). Students write programs in SCHEME to illustrate the paradigms. Prerequisite(s): Computer Science 102, and either Computer Science 205 or Mathematics s21. Not open to students who have received credit for Computer Science 202. Staff. 360. Independent Study. Students, in consultation with a faculty advisor, individually design and plan a course of study or research not offered in the curriculum. Course work includes a reflective component, evaluation, and completion of an agreedupon product. Sponsorship by a faculty member in the program/department, a course prospectus, and permission of the chair is required. Students may register for no more than one independent study per semester. Staff. 365. Special Topics. A seminar usually involving a major project. Recent topics have included the mathematics and algorithms of computer graphics, in which students designed and built a computergraphics system, and contemporary programming languages and their implementations, in which students explored new languages, in some cases using the Internet to obtain languages such as Oberon, Python, Haskell, and Dylan. Written permission of the instructor is required. Staff. Short Term Units s50. Independent Study. Students, in consultation with a faculty advisor, individually design and plan a course of study or research not offered in the curriculum. Course work includes a reflective component, evaluation, and completion of an agreedupon product. Sponsorship by a faculty member in the program/department, a course prospectus, and permission of the chair is required. Students may register for no more than one independent study during a Short Term. Staff. 
© 2001 Bates College. 