The material on this page is from the 2000-01 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 in Computer Science

[For more major and secondary concentration information: Mathematics and Computer Science]

101. Computer Science I. An introduction to computer science, with the major emphasis on the design, development, and testing of computer software. It introduces the student to a disciplined approach to algorithmic problem-solving in a modern programming environment using an object-based event-driven programming language. Students develop programs in Visual BASIC to run under the Windows operating system. The course has an associated laboratory that provides hands-on experience. Students complete a substantial individual or group project. S. Ross.

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 object-oriented programming. Computer Science 101 and 102 provide a foundation for further study in computer science. Language of instruction for 2000–2001: Visual BASIC. 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 first-year students. Staff.

301. Algorithms. The course covers specific algorithms (e.g., searching, sorting, merging, numeric, and network algorithms), related data structures, an introduction to complexity theory (O-notation, 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. J. Rhodes.

302. Theory of Computation. A course in the theoretical foundations of computer science. Topics include finite automata and regular languages, pushdown automata and context-free languages, Turing machines, computability and recursive functions, and complexity. Prerequisite(s): Computer Science 102, and either Computer Science 205 or Mathematics s21. P. Johann.

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 cathematics 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, tail-recursion, binding and scope, assignment, and generic operators. Paradigms covered include imperative (e.g., Pascal and C), functional (e.g., LISP), object-oriented (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. D. Haines.

360. Independent Study. Independent study by an individual student with a faculty member. Permission of the department is required. Students are limited to 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 computer-graphics 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

s45. Seminar in Computer Science. The content varies. Recent topics include cryptography and data security, computers and contemporary society, and functional programming. Prerequisites vary with the topic covered.

    s45B. Computers and Contemporary Society. Recent advances in computing — and the changing technologies to which those advances have given rise — have brought about tremendous changes in our everyday lives. The past decade has seen, for example, the birth of the World Wide Web, an explosion in the growth of the Internet, and an increasing reliance on expert systems. It has also seen an increase in software piracy, hacking, and other computer crime, as well as the rise of the new culture of simulation. This unit examines a number of issues of concern as modern culture becomes increasingly infused with technology and the technological. Topics covered include legal, ethical, and social issues in computing, such as privacy, security, free speech, professional ethics for computer scientists, computers as tools for democratization, hacker culture, and the impact of computers on how we think about and relate to ourselves and one another. Enrollment limited to 20. P. Johann.

    s45C. Object Oriented Programming in C++. This unit offers a thorough introduction to object oriented programming in C++ using Borland's C++ Builder compiler. Prerequisite(s): Computer Science 102. Not open to students who have received credit for a programming course in either C++ or Java. R. Brooks.

s50. Individual Research. The department permits registration for this unit only after the student submits a written proposal for a full-time research project to be completed during the Short Term and obtains the sponsorship of a member of the department to direct the study and evaluate its results. Students are limited to one individual research unit. Staff.



[home] [up] [reply] [help]


© 2000 Bates College.
All Rights Reserved.
Last Modified: 12/7/00 by mkm