Courses

Courses

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.