Computer Science Courses
1101. Unix and Systems Administration. Fundamentals of the Unix operating system and topics relevant to managing a Unix
network.
1410. Introduction to Computer Science. Introduction to the design of programs and algorithms and the fundamental ideas and
concepts of computer science, with emphasis on the development of problem solving
strategies and good programming style using functional languages. Lists, structures,
contracts, unit tests. It is offered Fall and Spring.
2102. Other Programming Languages. May be repeated. Covers programming languages such as Perl, C, C++, Ruby, Python,
etc. Prerequisite: MCS 1410.
2103. Computing Practicum. May be repeated. Topics chosen according to interests of students and instructors,
e.g. debugging tools, GUI design. Prerequisite/Co-requisite: MCS 1410.
2315. Discrete Structures I and II. Introduction to procedural and object-oriented programming, including loops and branching, structured programming, objects and inheritance, and several common data structures: arrays, stacks, queues and trees. Mathematical topics include: induction and counting, theorems on trees and graphs and elementary algorithms. Prerequisite: MCS 1410. Spring.
3311. Theory of Computation. Abstract models of computing machines and the data they process are developed. These
are used to study the theoretical limitations of what they can achieve. The ultimate
goal is to develop a sufficiently general model of computation where one may discover
universal laws that govern all programming languages together with the computing machines
which may be built to interpret them. The topics covered are the theory of automata,
formal languages, computability by Turing machines, and Church's thesis. Proofs are
required. Prerequisite: MCS 3316 or consent of instructor. It is offered Spring,
even years.
3312. Analysis of Algorithms. A mathematical study of the complexity of fundamental algorithms in computer science.
Prerequisite: MCS 2315 and MCS 3316. It is offered Fall, odd years.
3316. Advanced Discrete Structures. A deepening and extension of the topics learned in Discrete Structures. New topics
include: hashes and maps, heaps and priority queues, logic, discrete probability,
sets, relations and functions, and proof techniques. Prerequisite: MCS 2315. Fall
3317. Computer Organization. Hardware design methods in particular formal models of simple register machines are
developed and then used to study program interpretation and compilation techniques.
Some topics in storage allocation such as garbage collection and maintaining the illusion
of infinite memory are also discussed. A sizable programming project is required.
Prerequisite: MCS 2315 and MCS 3316. It is offered Fall, even years.
3352. Programming Languages. Study of the fundamental principles in the design and implementation of programming languages. Study includes the mathematical theory behind these principles and students must be comfortable with proofs. Topics include the substitution model, hierarchical structures, the environment model, metalinguistic abstraction, and memory representation. Students write their own language interpreter. Prerequisite: MCS 3316. It is offered Spring, even years.
3451. Operating Systems and Concurrent Programming. A survey of the issues involved in the design and implementation of modern timesharing,
multitasking systems. Topics covered include scheduling algorithms, synchronization
problems, memory management, and file management. Students partially write their own
operating system. Prerequisite: MCS 2315 and MCS 3316. It is offered Spring, odd
years.
3V57. Internship. Graded Pass/No Pass.
4410. Compiler Design. Exploring the issues related to the design and implementation of programming language
translators including formal grammars and parsing, semantic definitions and semantic
processing, run-time storage management and symbol tables, error recovery, code generation,
and as time permits optimization of compiled code. Students write a significant amount
of a compiler on their own, a large and complex coding project. Prerequisite: MCS
3316. It is offered Fall, even years.
4V43. Independent Research in Computer Science. This course provides the individual student with an opportunity to examine any topic,
problem, or work within the discipline of Computer Science. Content will be determined
by consultation with the instructor.
4V50. Special Topics in Computer Science. Courses offered as needed, focusing on topics of interest to teachers and students.
4V61. Independent Studies. An opportunity for the student to examine in depth any topic within the field under the guidance of the instructor. For advanced students.