Computer Science

Professor Carla Brodley, Acting chair; Artificial intelligence, machine learning, computer security
Professor Sarah Frisken, Computer graphics and modeling
Professor Diane L. Souvaine, Computational geometry, algorithm design and analysis
Associate Professor Anselm C. Blumer, Artificial intelligence, machine learning, computational biology
Associate Professor Alva Couch, Network administration, parallel and distributed computing, scientific computing and visualization
Associate Professor Lenore J. Cowen, Computational biology, theory of computation, algorithm design and analysis
Associate Professor Soha Hassoun, CAD, VLSI design
Associate Professor Robert J. K. Jacob, Human-computer interaction, multimedia studies
Emeritus Associate Professor David Krumme, Parallel and grid computing
Associate Professor James Schmolze, Artificial intelligence, machine learning
Associate Professor Donna Slonim,
Computational biology, artificial intelligence, machine learning
Assistant Professor Samuel Z. Guyer, Compilers, programming languages
Assistant Professor Roni Khardon, Machine learning, artificial intelligence, computational learning theory
Assistant Professor A. Kofi Laing, Parallel and distributed computing, theory of computation, algorithm design and analysis
Senior Lecturer Judith A. Stafford, Software engineering
Lecturer Kris Powers, Computer science education
Adjunct Professor Bruce Boghosian, Quantum computing, scientific and distributed computing
Adjunct Professor Christoph Börgers, Applied mathematics and computing
Adjunct Professor Douglas Preis, Scientific computing, visualization
Adjunct Associate Professor Misha Kilmer, Numerical linear algebra, linear algebra, scientific computing and visualization
Adjunct Associate Professor Karen Panetta, Human-computer interaction, multimedia studies
Adjunct Assistant Professor Marina Bers, Human-computer interaction, collaborative learning systems, virtual communities

 

The department offers undergraduate programs in computer science for both liberal arts and engineering students, and several degree and nondegree graduate programs.

Undergraduate Educational Objectives

The undergraduate programs in Computer Science aim to prepare graduates in several ways:
1. Graduates should have substantive knowledge in theoretical computer science and algorithm analysis.
2. Graduates should have substantive knowledge in applied computer science and software engineering.
3. Graduates should be prepared to pursue a professional career in or related to computing or software.
4. Top graduates should be prepared to pursue graduate study in computer science.
 

Undergraduate Concentration Requirements - College of Liberal Arts

Major in Computer Science
Ten courses: eight courses in computer science and two courses in related fields. The computer science courses must be more advanced than Computer Science 11 and must include Computer Science 15, 40, 80, 160, and 170. The related fields courses are Mathematics 12 or 17 and Mathematics 22. The introductory courses Computer Science 10 and 11 as well as Mathematics 4, 5, 6, and 11, do not count toward the major. No more than one Directed Study (193, 194) may be counted toward the major. All ten courses must be completed with a grade of C- or better.

The above are minimal requirements for the concentration. For students who desire a stronger program, the following courses are recommended: Computer Science 180, Mathematics 46, 145, 161.

Undergraduate Concentration Requirements  - School of Engineering

Bachelor of Science in Computer Science
Thirty-eight courses: the introductory (11 courses) and the humanities and/or arts and social sciences requirements (5 courses) described in the section devoted to the general requirements of the School of Engineering; a foundation requirement (5 courses); a concentration requirement (12 courses); and free electives (5 courses). The foundation requirement comprises Computer Science 11 and 15, Engineering Science 3 and 4, and Civil Engineering 102 or Mathematics 162. The concentration requirement comprises Computer Science 40 (or Electrical Engineering 14), 80, 160, 170, and 180; five other courses in computer science; one other course in computer science, mathematics, or electrical engineering; and a senior project approved by the department.

The following sample program is one way of satisfying the above requirements; further information regarding options and procedures is available from the department.

First Year
FALL TERM
Mathematics 11
Computer Science 11 (Introduction to Computer Science)
English 1
Engineering 1 (half credit)
Half-credit course in engineering 

SPRING TERM
Mathematics 12
Computer Science 15 (Data Structures)
Chemistry 1 or 16
Engineering 2 (half credit)
Half-credit course in engineering 

Sophomore Year
FALL TERM
Mathematics 13 (Calculus III)
Computer Science 40
Physics 11
Engineering Science 3 (Introduction to Electrical Engineering)
Humanities or social sciences elective

SPRING TERM
Mathematics 22
Computer Science 80 (Programming Languages)
Physics 12 or Chemistry 2
Engineering Science 4 (Introduction to Digital Logic Circuits)
Humanities or social sciences elective

Junior Year
FALL TERM
Computer Science 160 (Algorithms)
Civil Engineering 102 
Science elective
Humanities or social sciences elective
Computer science elective

SPRING TERM
Computer Science 170 (Theory of Computation)
Computer science elective
Computer science elective
Humanities or social sciences elective
Free elective

Senior Year
FALL TERM
Computer Science 180 (Software Engineering)
Computer science elective
Computer science elective
Humanities or social sciences elective
Free elective

SPRING TERM
Computer Science 190 (Senior Design Project)
Computer science elective
Free elective
Free elective
Free elective

Undergraduate Minor Program
Minor in Computer Science
Five courses, including Computer Science 15; two courses chosen from Computer Science 40, 80, 160, and 170; one course in computer science numbered 100 or above; and either Mathematics 22 or one additional course in computer science numbered above 11.

Postbaccalaureate Program in Computer Science
The postbaccalaureate program in computer science offers the student with a bachelor's degree, but few computer science courses, the opportunity to earn the equivalent of an undergraduate minor in computer science by completing the requirements for the minor. It is designed to give the student with a nontechnical, liberal arts degree the introductory knowledge base to enter the technology field or continue on for graduate study in computer science. For more information, contact the Office of Graduate and Professional Studies at 617-627-3395 or visit http://ase.tufts.edu/gradstudy.

Certificate Programs
Certificate in Computer Science 
The four-course, graduate-level certificate program in computer science is for the student with a bachelor's degree in computer science or a closely related field with approved work experience. The program is designed for those who wish to update their skills and broaden their knowledge to meet the challenges of and opportunities available in today's rapid-pace technology field. For more information, contact the Office of Graduate and Professional Studies at 617-627-3395 or visit http://ase.tufts.edu/gradstudy.

Certificate in Human-Computer Interaction
In an interdisciplinary collaboration between the Department of Psychology, the Department of Computer Science, and the Boston School of Occupational Therapy at Tufts, this four-course, graduate-level certificate is designed to train the next generation of computer professionals for tomorrow's complex challenges. The program is open to individuals with a bachelor's degree, and is designed to be pursued on a part-time basis by computer programmers, Web designers, human factors professionals, software engineers, and user-interface designers who wish to develop or enhance their user-interface design and implementation skills. For more information, see Human-Computer Interaction, or contact the Office of Graduate and Professional Studies at 617-627-3395. or visit http://ase.tufts.edu/gradstudy.

Graduate Programs
Master of Science

The master of science degree requires ten courses at the 100 level or above. At least eight credits must be from approved courses. At least four of the courses must be in computer science, and at least two of the courses must include a serious programming component. To use courses offered outside the Department of Computer Science, the student must obtain the approval of the department. Students must also demonstrate competency in the material covered in Mathematics 22 and Computer Science 40, 80, 160, and 170. The last two courses, 160 and 170, can be taken as part of the master's degree program. 

The project requirement includes a written report which must be approved by a member of the faculty. Substantial projects, typically involving research, can count as one credit through the courses Computer Science 293 and 294. The project requirement can also be satisfied by a written master's thesis, defended orally, counted as equivalent to two courses, through the courses Computer Science 295 and 296. 

Doctor of Philosophy
Students must have a master's degree in computer science or a related field to be admitted to the Ph.D. program. Applicants to the Ph.D. program who do not have a master's degree will instead be considered for admission to the M.S. program, and on completion of that program will automatically be considered for admission to the Ph.D. program.

Doctoral study consists or preliminary coursework and study, qualifying exams, and creative research culminating in a written dissertation. Areas available for dissertations in computer science include artificial intelligence, data compression, databases, human-computer interaction, machine learning, parallel and distributed computation, visualization and computational geometry. 

Detailed requirements and procedures for the Ph.D. program are outlined on the department Web pages at www.cs.tufts.edu.


Undergraduate Courses

10 Computer Science Primer. (Cross-listed as Engineering 47.)This half-credit course is a fast-paced introduction to computer science and the C++ programming language for students with no background in computer programming except Engineering 1 or 2 where applicable. The weekly programming assignments build upon previous ones, employ important computer science algorithms, and lead to the construction of a real-life application. Members of the department

11 Introduction to Computer Science. Introductory computer science for students with some background in computer programming. Problem solving and structured design techniques are studied through frequent programming assignments. Provides foundation for further study. Prerequisite: Computer Science 10, or basic ability to write simple computer programs using assignment, conditionals, loops, and function calls. The computer language previously studied by the student does not matter. Members of the department

15 Data Structures. A second course in computer science. Data structures and algorithms are studied through major programming projects. Topics include linked lists, trees, graphs, dynamic storage allocation, and recursion. Prerequisite: Computer Science 11 or consent. Members of the department

20 Multimedia Programming. An introduction to techniques, principles, and practices of writing computer programs for the World Wide Web. Server and browser capabilities and limits. Media types, handlers, and limitations. Web programming languages and techniques. Web security, privacy, and commerce. Lectures augmented with programming projects illustrating concepts and current practice. Prerequisite: Computer Science 11 or consent. Couch

40 Computer Architecture and Assembly Language Programming. Structure and function of the main components of computer systems: processors, main memory, and disk storage devices. Processor design, including instruction set design and interpretation. Assembly language programming. Implementation issues for high-level languages. Prerequisite: Computer Science 15. Members of the department

50 Elementary Special Topics. Content and prerequisites to be announced.

80 Programming Languages. An overview of language design and implementation, plus programming techniques for particular types of languages. Compilers and interpreters, binding, scope rules, formal semantic models, structure hiding, object-oriented programming, functional programming, and logical programming. Examples and problems from Pascal, Algol, C++, Java, Scheme, Lisp, Prolog, and others. Prerequisite: Computer Science 15. Members of the department

Courses for Undergraduate and Graduate Students

106 Object-Oriented Programming for Graphical User Interfaces. Object-oriented programming (OOP) and design using, the Java language. General OOP concepts (classes and instances, methods, inheritance) plus specifics of programming in Java, with emphasis on application to graphical user interfaces (GUIs). Design and programming projects using Java and  toolkits. Prerequisite: Computer Science 15. Jacob

111 Operating Systems. Fundamental issues in operating system design. Concurrent processes: synchronization, sharing, deadlock, scheduling. Relevant hardware properties of uniprocessor and multiprocessor computer systems. Prerequisites: Computer Science 40 and one additional course in computer science numbered 80 or above. Spring. Members of the department

112 Computer Science. Computer Networks and Protocols. Design and implementation of computer communication networks, protocols, and applications, with an emphasis on the Internet protocol suite. Network architectures and programming interfaces. Data link, transport, and routing protocols. Congestion sources and remedies. Addressing and naming in local area and wide area networks. Network security and network management.  Prerequisite: Computer Science 111 or consent. Brodley

114 Network and System Administration. A survey of the theory and practice of maintaining reliable, robust, and secure computer
 networks. Planning, deployment, monitoring, and maintenance of computer systems, networks, network services, and user environments.  
Dependency analysis and network troubleshooting. Administrative maturity models and best practices. Security, ethics, and legal issues of 
system administration.  Hands-on exercises in deploying network services and infrastructure. Prerequisite: Comp 111. Couch

115 Database Systems. Fundamental concepts of database systems, including conceptual design, relational and object-oriented data models, query languages (SQL, QBE), and implementation issues (indexing, transaction processing, concurrent control). The concepts and algorithms covered encompass many of those used in commercial and experimental database systems. Other topics include distributed databases and distributed query processing. Prerequisite: Computer Science 15. Members of the department

116 Computer Systems Security. A systems perspective on host-based and network-based computer security. Current vulnerabilities and measures for protecting hosts and networks.  Firewalls and intrusion detection systems. Principles illustrated through hands-on programming projects. Prerequisite: Comp 40 and one course chosen from among Comp111, Comp114, and Comp115. Brodley.

126 Numerical Analysis. (Cross-listed as Mathematics 126.) Analysis of algorithms involving computation with real numbers. Interpolation, methods for solving linear and nonlinear systems of equations, numerical integration, methods for ordinary differential equations. Prerequisites: Mathematics 38 and programming ability in a language such as C, C++, Fortran, Pascal, or Matlab. Members of the department

128 Numerical Linear Algebra. (Cross-listed as Mathematics 128.) The two basic computational problems of linear algebra: solution of linear systems and computation of eigenvalues and eigenvectors. Prerequisites: Mathematics 46 and Computer Science 11. Members of the department

131 Artificial Intelligence. History, theory, and computational methods of artificial intelligence. Basic concepts include representation of knowledge and computational methods for reasoning. One or two application areas will be studied, to be selected from expert systems, robotics, computer vision, natural language understanding, and planning. Students will implement the computational methods in the Lisp language. Prerequisites: Computer Science 15 and 80. Schmolze

132 Decision Theory and Artificial Intelligence. Probabilistic and decision-theoretic AI. Probabilistic and decision theoretic representations along with automated reasoning that maximizes expected benefit. Probability theory, utility theory, decision theory, Markov models, Markov decision processes, and making decisions under uncertainty. Applications to AI, including planning, decision making, communications with humans, and learning.  Prerequisite: Computer Science 15. Schmolze

150 Special Topics. Content and prerequisites to be announced. Over the past three years, special topics courses have been offered in parallel computing, graph drawing, computational geometry, multimedia data compression, cryptography and security, digital network communication, spoken language systems, system and network administration, and machine learning.

160 Algorithms. Introduction to the study of algorithms. Strategies such as divide-and-conquer, greedy methods, and dynamic programming. Graph algorithms, sorting, searching, integer arithmetic, hashing, and NP-complete problems. Prerequisites: Computer Science 15 and Mathematics 22. Members of the department

163 Computational Geometry. (Cross-listed as Mathematics 163.) Design and analysis of algorithms for geometric problems. Topics include proof of lower bounds, convex hulls, searching and point location, plane sweep and arrangements of lines, Voronoi diagrams, intersection problems, decomposition and partitioning, farthest-pairs and closest-pairs, rectilinear computational geometry. Prerequisite: Computer Science 160 or consent. Souvaine

170 Theory of Computation. Models of computation: Turing machines, pushdown automata, and finite automata. Grammars and formal languages, including context-free languages and regular sets. Important problems, including the halting problem and language equivalence theorems. Prerequisites: Computer Science 15 and Mathematics 22. Members of the department

171 Human-Computer Interaction. Introduction to human-computer interaction, or how computers communicate with people. Methodology for designing and testing user interfaces, interaction styles (command line, menus, graphical user interfaces, virtual reality), interaction techniques (voice, gesture, eye movement), design guidelines, and user-interface management system software. Students will design a small user interface, program a prototype, and test the result for usability. Prerequisite: Computer Science 11 and senior standing or consent. Jacob

175 Computer Graphics. The course provides the background to understand and build interactive graphics systems. Introduction to computer graphics from simple two-dimensional graphics through three-dimensional viewing and transforms. Interactive graphics programming, raster graphics, raster algorithms, geometrical transformations, viewing in three dimensions, modeling and hierarchical data structures, visual realism, virtual reality, interaction devices, tasks and techniques. Final project. Prerequisite: Computer Science 15. Frisken

180 Software Engineering. The special problems of creating very large programs, and methods for coping with these problems. Program design strategies, project management tools, programming environments. Prerequisite: Computer Science 80. Members of the department

181 Compilers. Translation and implementation of programming languages. Parsing, code generation, and optimization. Compiler design projects for simple block-structured programming languages are used to illustrate the concepts and methods. Prerequisites: Computer Science 40, 80, and 170. Krumme

190 Software Engineering Project. Team analysis, planning, development, and maintenance of a software product, using software engineering principles, practices, and tools. This course fulfills the project requirement of the Bachelor of Science in Computer Science in the School of Engineering. Prerequisite: Computer Science 180. Stafford 

193, 194 Directed Study. Guided study of an approved topic. Prerequisite: consent. Credit as arranged.

232 Advanced Knowledge-Based Systems. Graduate-level course in which students take Computer Science 132 plus study additional topics in an application area and produce a substantial independent project or paper in that area. Prerequisite: Computer Science 131. Schmolze

250 Advanced Special Topics. Content and prerequisites to be announced.

255 Coding Theory and Data Compression Techniques. Techniques of data compression, including Huffman, Tunstall, Lempel-Ziv, and arithmetic codes. Block and convolutional codes for automatic error correction. Basic definitions and concepts from the mathematical theory of information are also covered. Prerequisite: Mathematics 46. Blumer

260 Advanced Algorithms. Design and analysis of sequential, parallel, probabilistic, and approximation algorithms. Graph algorithms, sorting, searching, geometric algorithms, mathematical programming, lower bounds, and intractable problems. Prerequisite: Computer Science 160. Members of the department

263 Advanced Computational Geometry. (Cross-listed as Mathematics 263.) Design and analysis of sequential, parallel, probabilistic, and approximation algorithms for geometry problems. Geometric data structures, complexity, searching, computation, and applications. Selected advanced topics. Prerequisites: Computer Science 163 or consent. Souvaine

265 Parallel Computation. Existing and proposed architectures for parallel computation. Fundamental synchronization and communication protocols. Algorithm development for distributed memory multicomputers. Prerequisites: Computer Science 15 and 160. Krumme

270 Theory of Computation. Computability, undecidability, computational complexity. Prerequisite: Computer Science 170. Members of the program

272 User-Interface Software. Emerging new non-WIMP (window icon menu pointer) user interface styles, such as virtual reality, lightweight, non-command, tangible, natural, continuous, and parallel interfaces. Techniques, languages, abstractions, and tools for building current and future user-computer interfaces. Project in designing, prototyping, and building a non-WIMP user interface, with class discussions and critiques. Prerequisites: Computer Science 15, plus a course related to human-computer interaction. Jacob

275 Computer Science. Advanced Topics in Computer Graphics. Emphasis will change from year to year and may include physics-based modeling (including particle systems, animation kinematics, deformation, fluid modeling), advanced rendering techniques, shape representation and modeling, and computer animation. Prerequisites: Computer Science 175 and a good working knowledge of the C programming language. Frisken

277 Data Visualization. Selected advanced topics on the visualization of abstract structures, user-interface design, scientific visualization, visual languages, and graph drawing. The course includes the study and design of applications to software visualization, digital libraries, and multimedia. The class format is seminar style with presentation of research papers. Final projects will use advanced visualization tools. Prerequisite: Computer Science 160 or consent. Couch

290 Programming Project. Independent development of a complete computer program for an approved task, including design, implementation, and documentation. Prerequisite: consent.

293, 294 Special Topics. Guided individual study of an approved topic suitable for a master's design project. Credit as arranged. Members of the department

295, 296 Thesis. Guided research on a topic that has been approved as a suitable subject for a master's thesis. Members of the department

297, 298 Graduate Research. Guided research on a topic suitable for a doctoral dissertation. Credit as arranged. Members of the department

401PT Master's Continuation, Part-time.

402FT Master's Continuation, Full-time.

501PT Doctoral Continuation, Part-time.

502FT Doctoral Continuation, Full-time.