Computer Science

All courses, arranged by program, are listed in the catalog. Courses designated as “active” have been offered in the past three years. Courses designated as “inactive” have not been offered in the past three years and indicate the semester in which the course was last offered. If you cannot locate a specific course, try our advanced search link. Current class schedules, with posted days and times, may be found on the Registrar's Office website or by logging directly into iSiS.

91.100 Media Computing Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8054
Status Active

An introductory course to computer programming using multimedia applications such as images, video and audio. Linear data structures representing multimedia data are manipulated with loops and conditionals in the Python language.

91.101 Computing I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8055
Status Active

Introduction to computing environments: introduction to an integrated development environment; C, C++, or a similar language. Linear data structures; arrays, records, and linked lists. Abstract data types, stacks, and queues. Simple sorting via exchange, selection, and insertion, basic file I/O. Programming style documentation and testing. Ethical and social issues. Effective Fall 2013, Co-req 91.103 Computing 1 Lab.

Pre/Co-Requisites: Co-req: 91.103 Comp. 1 Lab.

91.102 Computing II Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8056
Status Active

Computing II focuses on the implementation and applications of data structures, including arrays, linked lists, stacks, queues, trees, binary trees, binary search trees, heaps, graphs, and hash tables. Recursive approaches are used. Performance analysis is discussed. Attention is paid to programming style, documentation, and testing. This course includes extensive laboratory work. Effective Fall 2013, Co-req: Computing 2 Lab.

Pre/Co-Requisites: Pre-req: 91.101 Computing I and 91.103 Computing I Lab.

91.103 Computing I Lab Credits: 1

Course Details
Min Credits 1
Max Credits 1
Course ID 38309
Status Active

This is the lab class for 91.101 Computing I. This class must be taken with 91.101 Computing I in the same semester.

91.104 Computing II Lab Credits: 1

Course Details
Min Credits 1
Max Credits 1
Course ID 38310
Status Active

This is a lab class for 91.102 Computing II. This class must be taken with 91.102 Computing II in the same semester.

Pre/Co-Requisites: Co-req: Computing II 91.102.

91.108 Intro to App Des & Mobile Comp Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 38246
Status Active

This course is an introduction to design principles of applications ("apps") that run on mobile devices (smart phones and tablet computers). The course focuses on software interaction design and computational thinking. Students will gain theoretical knowledge and design skills in these domains by building a series of apps that run on the Android platform using MIT App. Inventor software. The course will also include discussion of societal impacts of computing.

91.112 Undeclared Science Seminar Credits: 1

Course Details
Min Credits 1
Max Credits 1
Course ID 36238
Status Active

Discussions will be conducted on a wide range of topics in the sciences to familiarize the student with the programs, procedures, research, and educational opportunities at the University.

91.113 Exploring the Internet Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8058
Status Active

An introduction to internet technologies and how they intersect with social, political, and economic issues. Includes: the history of the internet, how it's presently managed, how information is transferred between servers and clients, collaborative web technologies, search engines, encryption, digital rights management, certificate authorities, phishing and other malware, and privacy concerns. Students will build a basic website using HTML and CSS.

Pre/Co-Requisites: Not for Academic Plan Computer Science (BS).

91.117 Artbotics Credits: 4

Course Details
Min Credits 4
Max Credits 4
Course ID 33571
Status Active

Artbotics focuses on exploring the intersection among art, computer science, and robotics. The course is project-driven, and includes public exhibitions and service learning. Students will learn founding principles in both the fields of art and computer science, and put them into practice by creating interactive, tangible exhibits that are displayed in public settings. In the service learning component, students will mentor local high school students in the same topics. The course will also include guest lectures from practitioners in the fields.

91.201 Computing III Credits: 4

Course Details
Min Credits 4
Max Credits 4
Course ID 8064
Status Active

This course presents an introduction to object-oriented software development using the C++ programming language. The main ideas are encapsulation, class hierarchy and inheritance, polymorphism, copy control, operator overloading, dynamic memory management, and templates. Additional topics include the Standard Template Library (containers and iterators), class design diagrams, and exception handling.

Pre/Co-Requisites: Pre-Req: 91.102 Computing II.

91.203 Assembly Language Programming Credits: 4

Course Details
Min Credits 4
Max Credits 4
Course ID 8066
Status Active

Presents the organization and operation of a conventional computer, including principal instruction types, data representation, addressing modes, program control, I/O, assembly language programming, including instruction mnemonics, symbolic addresses, assembler directives, system calls, and macros, the usage of text editors, symbolic debuggers, and loaders, and the use of pseudocode in guiding structured assembly language programming.

Pre/Co-Requisites: Pre-Req: 91.102 Computing II.

91.204 Computing IV Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8067
Status Active

Advanced C++ programming, which deepens students' understanding of object-oriented analysis and design. Basic software engineering principles and practice, including work with APIs. Topics may include program translation, web software, parsing, and regular expressions.

Pre/Co-Requisites: Pre-Req: 91.201 Computing III.

91.211 Computer Science for SRT Applications Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8069
Status Active

This course is an introduction to C programming, with applications in sound recording technology. Students will write and execute several programs that perform operations pertinent to SRT, including manipulating MIDI codes, performing simple signal processing functions, processing sampled data, and synthesizing sound algorithmically. Not for computer science majors.

Pre/Co-Requisites: Academic Sub-Plan Sound Recording Technology Only.

91.212 Special Topics: Sound Thinking Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 35253
Status Active

Special Topics: Sound Thinking is an interdisciplinary elective for students at the sophomore level and above that explores the intersection of computing and music. The course explores the properties of sound, musical form, non-traditional notation, music programming, the computer as a musical instrument, and live performance. It is co-taught by Music and Computer Science faculty.

91.301 Organization of Programming Languages Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8076
Status Active

Analytical approach to the study of programming languages. Description of the salient features of the imperative, functional, logical, and object-oriented programming paradigms in a suitable metalanguage such as Scheme. Topics include iteration, recursion, higher-order functions, types, inheritance, unification, message passing, orders of evaluation, and scope rules. Elementary syntactic and semantic descriptions. Implementation of simple interpreters.

Pre/Co-Requisites: Pre-Req: 91.201 Computing III.

91.304 Foundations of Computer Science Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8077
Status Active

A survey of the mathematical foundations of Computer Science. Finite automata and regular languages. Stack Acceptors and Context-Free Languages. Turing Machines, recursive and recursively enumerable sets. Decidability. Complexity. This course involves no computer programming.

Pre/Co-Requisites: Pre-Req: 91.102 Computing II, and 92.322 Discrete Structures II.

91.305 Computer Architecture Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8078
Status Active

Examines the basic functional components of a computer system including the CPU, memory systems, and I/O systems. Each of these three areas will be developed in detail with a focus on the system design and component integration. Topics will include CPU control and ALU operation, computer timing, data address and I/O bus activity, addressing model, programmed and DMA I/O, and instruction sets and micro code.

Pre/Co-Requisites: Pre-Req: 16.265 Intro to Logic Design, 91.102 Computing II, 91.203 Comp Org & Assembly Lang or 16.317 Microprocessor Syst Des I.

91.308 Operating Systems Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 1228
Status Active

Presents an introduction to major operating systems and their components. Topics include processes, concurrency and synchronization, deadlock, processor allocation, memory management, I/O devices and file management, and distributed processing. Techniques in operating system design, implementation, and evaluation will be examined.

Pre/Co-Requisites: Pre-Req: 91.305 Computer Architecture.

91.309 Database I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8080
Status Active

The Database I and II course pair provides students with a comprehensive introduction to data modeling, design of databases, use of database management systems for applications, and exploration into the building of databases. Database I covers relational data models, relational algebra and SQL -- The standard language for creating, querying, and modifying relational databases.

Pre/Co-Requisites: Pre-Req: 91.204 Computing IV.

91.310 Database II Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8081
Status Active

Advanced topics in database systems. The database I and II course pair provides students with a comprehensive introduction to data modeling, design of databases, use of database management systems for applications, and exploration into the building of databases. Database II focuses on database design with Entity-Relationship (E-R) models. Students design and implement a web-based database using MySQL and PHP.

Pre/Co-Requisites: Pre-Req: 91.309 Database I.

91.350 Special Topics Credits: 1-3

Course Details
Min Credits 1
Max Credits 3
Course ID 8085
Status Active

Pre/Co-Requisites: Pre-Req: 91.102 Computing II.

91.401 Software Project I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8093
Status Active

Specification, design, and implementation of a one- or two-semester software project proposed to a directing faculty member. Projects may be proposed as a one- or two-semester effort based on faculty approval. A two-semester effort requires subsequent registration for 91.402. Prerequisite: Students must submit a proposal to the directing faculty member, obtain his/her signed approval, and forward a copy of the signed proposal to department chairperson

Pre/Co-Requisites: Academic Plan or minor Computer Science (BS) and Level Sophomore Standing.

91.402 Software Project II Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8094
Status Active

A continuation of 91.401. Students must submit a proposal to the directing faculty member, obtain his/her signed approval, and forward a copy of the signed proposal to the department chairperson.

Pre/Co-Requisites: Pre-Req: 91.401 Software Project I.

91.404 Analysis of Algorithms Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8095
Status Active

Development of more sophisticated ideas in data type and structure, with an introduction to the connection between data structures and the algorithms they support. Data abstraction. Controlled access structures. Trees, lists, stacks, queues, graphs, arrays, hash tables. Algorithm design strategies such as divide and conquer. Elementary techniques for analysis; asymptotic analysis, recursion equations, estimation methods, elementary combinatorial arguments. Examination of problem areas such as searching and sorting, and the indicated representations and algorithms. The student will use the techniques learned in this course and in previous courses to solve a number of logically complex programming problems using pseudocode, with an emphasis on establishing algorithmic correctness and estimating time and space complexity.

Pre/Co-Requisites: Pre-Reqs: 91.102 Computing II, 92.322 Discrete Structures and 92.386 Probability & Statistics I.

91.405 Parallel Processing Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8096
Status Active

A study of parallel architectures and parallel algorithms, including classification of architectures,characterization of performance, design of parallel algorithms, evaluation of parallelsoftware, and languages for parallel processing. Students will write and execute programs for several different parallel machines.

Pre/Co-Requisites: Pre-Req: 91.308 Operating Systems.

91.406 Compiler Construction I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8097
Status Active

Includes both theory and practice. A study of grammars; specification and classes; the translation pipeline: lexical analysis, parsing, semantic analysis, code generation and optimization; and syntax-directed translation. Use of automatic generation tools in the actual production of a complete compiler for some language.

91.411 Software Engineering I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8099
Status Active

Software Engineering is an essential discipline for any computer science major. In this class you will learn skills that will help you design and build software projects for advanced computer science classes This course provides an introduction to systematic techniques for development of software, i.e. , "the Engineering of Software". Topics to be discussed include software life-cycle, group coordination, requirements specification, software design, software testing and software maintenance. Emphasis is given to the development of one complex software system and the system documentation necessary for such a complete software product The students will mock the software cycle via a medium-to-large semester-long project.

Pre/Co-Requisites: Pre-Req: 91.204 Computing IV.

91.412 Software Engineering II Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8100
Status Active

Software development methodologies for large-scale systems. Project organization, life cycle concept, data modeling, structured analysis and design, information hiding, and the use of computer-aided software engineering (CASE) tools. Team projects are required; these emphasize the design, documentation, and maintenance of complex software systems. Not open to students who have taken 91.523 Software Engineering I.

Pre/Co-Requisites: Pre-Req: 91.411 Software Engineering I.

91.413 Data Communications I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8101
Status Active

This course provides an introduction to fundamental concepts in the design and implementation of computer communication networks, their protocols, and applications. Topics include: TCP/IP and OSI layered network architectures and associated protocols, application layer, network programming API (sockets), transport, congestion, flow control, routing, addressing, autonomous systems, multicast and link layer. Examples will be drawn primarily from the Internet.

Pre/Co-Requisites: Co-Req or Pre-Req: 91.308 Operating Systems.

91.414 Data Communications II Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8102
Status Active

A continuation of 91.413. Topics include Multimedia Networks, network Management, Network Security, Wireless and Mobile Networks. Students will track discussion in IETF committees and work in a dedicated network laboratory.

Pre/Co-Requisites: Pre-Req: 91.413 Data Communications I.

91.420 Artificial Intelligence Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8104
Status Active

Topics include: search techniques and their properties, including A*; game-playing, including adversarial and stochastic search; probabilistic reasoning, including Markov Decision Processes and Hidden Markov Models; and reinforcement learning, including value iteration and q-learning. Topics are developed theoretically and with programming assignments. The course includes a student-directed final project and paper.

Pre/Co-Requisites: Co-req: 91.301 Organization of Programming Languages and 92.386 Probability and Statistics I.

91.421 Data Mining Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8105
Status Active

This introductory data mining course will give an overview of the models and algorithms used in data mining, including association rules, classification, and clustering. The course will teach the theory of these algorithms and students will learn how and why the algorithms work through computer labs.

Pre/Co-Requisites: Pre-Req: 91.420 Artificial Intelligence or 91.310 Database II.

91.422 Machine Learning Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8106
Status Active

This introductory course gives an overview of machine learning techniques used in data mining and pattern recognition applications. Topics include: foundations of machine learning, including statistical and structural methods; feature discovery and selection; parametric and non-parametric classification; supervised and unsupervised learning; use of contextual evidence; clustering, recognition with strings; small sample-size problems and applications to large datasets.

Pre/Co-Requisites: Pre-Reqs: 91.102 Computing II, 92.322 Discrete Structures and 92.386 Probability & Statistics I.

91.423 Computer Vision I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 38743
Status Active

Computer vision has seen remarkable progress in the last decade, fueled by the ready availability of large online image collections, rapid growth of computational power, and advances in representations and algorithms. Applications range from 3-D scene reconstruction, to visual Simultaneous Localization and Mapping (SLAM) for robotics, to real-time human body pose estimation. This introductory computer vision course explores various fundamental topics in the area, including the principles of image formation, local feature analysis, segmentation, multi-view geometry, image warping and stitching, structure from motion, and object recognition.

Pre/Co-Requisites: Pre-req: 91.102 Computing II, 92.132 Calculus II, and 92.322 Discrete Structures II.

91.427 Computer Graphics I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8107
Status Active

Introduction to graphics systems and concepts. History of graphics. Introduction to hardware, software, and mathematical tools. Graphics languages and APIs (OpenGL and other traditional and web-based libraries). Graphics data structures and algorithms for 2D and 3D modeling and viewing. Input, archiving, and display architectures.

Pre/Co-Requisites: Pre-Req: 91.201 Computing III.

91.428 Computer Graphics II Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8108
Status Active

An advanced course in computer graphics for students familiar with basic issues in computer graphics. Details on hidden line and surface removal. 2D and 3D curve and surface generation, rendering, illumination, and color models, realism through precision (ray tracing) and imprecision (fractals), modern hardware architectures, and animation and simulation systems.

Pre/Co-Requisites: Pre-Req: 91.427 Computer Graphics I.

91.442 Natural Language Processing Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 38884
Status Active

This course introduces principles and techniques behind natural language processing (NLP), and covers a large selection of important automatic text processing tasks. Selected topics include n-gram language models, part-of-speech tagging, statistical parsing, word sense disambiguation, discourse segmentation, information extraction, sentiment analysis, machine translation. Quantitative techniques are emphasized, with a focus on applying statistical models to large collections of text. The course provides students with a hands-on experience in building a substantial NLP application of their choice.

Pre/Co-Requisites: Pre-req: 91.422 Machine Learning.

91.450 Mobile Robotics I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8111
Status Active

An introduction to robotics, including laboratory. In the lab, students build and program robots. Topics include sensors, locomotion, deliberative, reactive, and hybrid control architectures, computer vision, application domains, and current research.

Pre/Co-Requisites: Pre-req: 91.102 Computing II, or Co-req: 16.317 Microprocessor System Design I.

91.451 Mobile Robotics II Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8112
Status Active

Advanced topics in robotics, including laboratory. Topics to be covered include probabilistic methods, including sensor modeling, hidden Markov models, particle filters, localization, and map making. Research-level robots are used in the laboratories.

Pre/Co-Requisites: Pre-req: 91.450 Mobile Robotics I, and Co-req: 92.386 Probability and Statistics I.

91.457 Computer Security Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8117
Status Active

Basic concepts of cryptography, data security, information theory, complexity, number theory, and finite field theory; encryption algorithms including the Data Encryption Standard (DES) and public key systems; incorporating cryptographic controls into computers; key management; access controls; information flow controls; and inference controls.

Pre/Co-Requisites: Pre-Reqs: 92.321 Discrete Structures I , 91.404 Analysis of Algorithms and 91.413 Data Communications I.

91.460 Selected Topics Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8120
Status Active

Depends on faculty interest, student demand, and developments in the field.

Pre/Co-Requisites: Junior or Senior Status.

91.461 Graphical User Interface Programming I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8121
Status Active

This is a first course in the design and implementation of graphical user interfaces (GUIs) for web-based environments. The course requires the completion of several client-side programming projects that are evaluated on design and layout of the user interface, coding style, and comprehensiveness of documentation. Students learn to create web pages using HTML, CSS, JavaScript, jQuery, and a variety of jQuery plugins. Server-side techniques using PHP and MySQL are explored if time permits. The course may be taken on its own, but is intended to be followed by 91.462 to complete a two-course CS project sequence.

Pre/Co-Requisites: Pre-Req: 91.201 Computing III.

91.462 Graphical User Interface Programming II Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8122
Status Active

A second course in the design and implementation of graphical user interfaces for web-based environments. The course requires the completion of a semester-long project done with others as a team. It explores the writing of a project proposal, the development and presentation of alpha and beta versions, usability testing, and a final presentation to an external audience.

Pre/Co-Requisites: Pre-Req: 91.461 GUI Program I with C or better

91.480 Honors Project I Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 8128
Status Active

This course provides an undergraduate research experience for Computer Science majors enrolled in the Honors Program. Each student develops a project idea in consultation with the instructor. The student writes a proposal for the project, reads the relevant literature, performs the project, writes a project report or thesis, and makes an oral presentation about the project.

Pre/Co-Requisites: Level is Junior or Senior standing.

91.490 Directed Studies in Computer Science Credits: 1-4

Course Details
Min Credits 1
Max Credits 4
Course ID 8131
Status Active

Individual study for a student desiring more advanced or more specialized work. This course may not be taken more than twice and may not be substituted for scheduled offerings. Prerequisite: Students must submit a proposal to the directing faculty member, obtain his/her signed approval, and forward a copy of the signed proposal to the department chairperson.

91.493 Cooperative Education in Computer Science Credits: 1

Course Details
Min Credits 1
Max Credits 1
Course ID 38490
Status Active

Supervision of cooperative educational experiences in Computer Science.

94.301 Organization of Programming Languages Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 30805
Status Active

Analytical approach to the study of programming languages. Description of the salient features of the imperative, functional, logical, and object-oriented programming paradigms in a suitable metalanguage such as Scheme. Topics include iteration, recursion, higher-order functions, types, inheritance, unification, message passing, orders of evaluation, and scope rules. Elementary syntactic and semantic descriptions. Implementation of simple interpreters. Note: This course is for CS graduate students needing to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.

94.304 Foundations of Computer Science Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 34537
Status Active

A survey of the mathematical foundations of Computer Science. Finite automata and regular languages. Stack Acceptors and Context-Free Languages. Turing Machines, recursive and recursively enumerable sets. Decidability. Complexity. This course involves no computer programming. This course is for CS graduate students needing it to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.

94.305 Computer Architecture Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 30806
Status Active

Examines the basic functional components of a computer system including the CPU, memory systems, and I/O systems. Each of these three areas will be developed in detail with a focus on the system design and component integration. Topics will include CPU control and ALU operation, computer timing, data address and I/O bus activity, addressing model, programmed and DMA I/O, and instruction sets and micro code. This course is for CS graduate students needing it to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.

94.308 Introduction to Operating Systems Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 30807
Status Active

Presents an introduction to major operating systems and their components. Topics include processes, concurrency and synchronization, deadlock, processor allocation, memory management, I/O devices and file management, and distributed processing. Techniques in operating system design, implementation, and evaluation will be examined. This course is for CS graduate students needing it to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.

94.404 Analysis of Algorithms Credits: 3

Course Details
Min Credits 3
Max Credits 3
Course ID 30808
Status Active

Development of more sophisticated ideas in data type and structure, with an introduction to the connection between data structures and the algorithms they support. Data abstraction. Controlled access structures. Trees, lists, graphs, arrays; algorithms design strategies; backtracking, greedy storage, divide and conquer, branch and bound. Elementary techniques for analysis; recursion equations, estimations methods, elementary combinatorial arguments. Examination of problem areas such as searching, sorting, shortest path, matrix and polynomial operations, and the indicated representations and algorithms. The student will use the techniques learned in this course and in previous courses to solve a number of logically complex programming problems. This course is for CS graduate students needing it to fulfill prerequisite requirements. It is not available to CS undergraduates without specific permission from the Undergraduate Coordinator.