Computer Science

Our PhD in Computer Science program seeks to prepare students to conduct state-of-the-art computer science research in preparation for careers in government, industry, and academia. Similarly, our MS in Computer Science program offers students the opportunity to broadly expand their knowledge in the field while focusing on one of our curricular specialties:

  • Artificial intelligence
  • Computer science theory
  • Database management
  • Graphics and robotics
  • Human/computer interaction
  • Information security
  • Networks
  • Programming languages
  • Software engineering
  • Systems
  • Game design

Graduate education in computer science also features the top-ranked Northeastern co-op program, enabling students to supplement their classroom education with real-world experience in the field. We have consistently placed more than 95 percent of our students in co-op positions. The college partners with several high-profile companies, including:

  • Amazon
  • Bloomberg
  • EMC Corporation
  • Fidelity Investments
  • IBM Corporation
  • Intuit
  • Kronos
  • MathWorks
  • Microsoft
  • Nokia
  • Phase Forward
  • SeaChange International
  • Verizon Communications

Admission Requirements

Applicants must submit an official application, official transcripts from all colleges/universities attended, a personal statement, official scores of the GRE General Test, and three letters of recommendation. International students must also submit official scores of the TOEFL examination. Acceptance into the College of Computer and Information Science is granted upon recommendation of the college graduate committee after a review of the completed application.

Candidates must have completed the undergraduate material listed below:

  • Experience in some high-level procedural language, e.g., C, C++, Java, Scheme, ML
  • Data structures
  • Computer organization
  • One year of college calculus
  • Discrete mathematics

Industrial experience in these areas may be an acceptable substitute for formal course work. Students may be accepted provisionally while completing these deficiencies and may take graduate courses concurrently as their preparation allows.

Doctor of Philosophy (PhD)

Master of Science (MS)

Master of Science in Computer Science (MSCS)

Graduate Certificate

Computer Science Courses

CS 5001. Intensive Foundations of Computer Science. 4 Hours.

Introduces the fundamental ideas of computing and programming principles. Discusses a systematic approach to word problems, including analytic reading, synthesis, goal setting, planning, plan execution, and testing. Presents several models of computing, beginning with functional program design. The latter part of the course consists of two parts: a task organization (ranging from the description of data to the creation of a test suite) and a data-oriented approach to the organization of programs (ranging from atomic data to self-referential data definitions and functions as data). Offers students an opportunity to practice pair programming and public code review techniques, as found in industry today. No prior programming experience is assumed; therefore, suitable for students with little or no computer science background. Prereq. MSCS ALIGN students only. Coreq. CS 5003.

CS 5002. Discrete and Data Structures. 4 Hours.

Introduces the mathematical structures and methods that form the foundation of computer science. Studies structures such as sets, tuples, sequences, lists, trees, and graphs. Discusses functions, relations, ordering, and equivalence relations. Examines inductive and recursive definitions of structures and functions. Covers principles of proof such as truth tables, inductive proof, and basic logic and the counting techniques and arguments needed to estimate the size of sets, the growth of functions, and the space-time complexity of algorithms. Also, discusses data structures such as arrays, stacks, queues, lists, and the algorithms that manipulate them. Prereq. MSCS align students only.

CS 5003. Recitation for CS 5001. 0 Hours.

Provides a small-group discussion format to cover material in CS 5001. Coreq CS 5001.

CS 5004. Object-Oriented Design. 4 Hours.

Presents a comparative approach to object-oriented programming and design. Discusses the concepts of object, class, metaclass, message, method, inheritance, and genericity. Reviews forms of polymorphism in object-oriented languages. Contrasts the use of inheritance and composition as dual techniques for software reuse—forwarding vs. delegation and subclassing vs. subtyping. Offers students an opportunity to obtain a deeper understanding of the principles of object-oriented programming and design, including software components, object-oriented design patterns, and the use of graphical design notations such as UML (unified modeling language). Illustrates basic concepts in object-oriented design with case studies in application frameworks and by writing programs in Java. Prereq. MSCS ALIGN students only. Coreq. CS 5005.

CS 5005. Recitation for CS 5004. 0 Hours.

Provides small-group discussion format to cover material in CS 5004. Coreq. CS 5004.

CS 5006. Algorithms. 2 Hours.

Introduces the basic principles and techniques for the design and implementation of efficient algorithms and data representations. Considers divide-and-conquer algorithms, graph traversal algorithms, linear programming, and optimization techniques. Covers the fundamental structures for representing data, such as hash tables, trees, and graphs. Prereq. MSCS ALIGN students only.

CS 5007. Computer Systems. 2 Hours.

Introduces the basic design of computing systems, computer operating systems, and assembly language using a RISC architecture. Describes caches and virtual memory. Covers the interface between assembly language and high-level languages, including call frames and pointers; the use of system calls and systems programming to show the interaction with the operating system; and the basic structures of an operating system, including application interfaces, processes, threads, synchronization, interprocess communication, deadlock, memory management, file systems, and input/output control. Prereq. MSCS ALIGN students only.

CS 5010. Programming Design Paradigm. 4 Hours.

Introduces modern program design paradigms. Starts with functional program design, introducing the notion of a design recipe. The latter consists of two parts: a task organization (ranging from the description of data to the creation of a test suite) and a data-oriented approach to the organization of programs (ranging from atomic data to self-referential data definitions and functions as data). The course then progresses to object-oriented design, explaining how it generalizes and contrasts with functional design. In addition to studying program design, students also have an opportunity to practice pair-programming and public code review techniques, as found in industry today. Prereq. Restricted to students in the College of Computer and Information Science. Coreq. CS 5011.

CS 5011. Recitation for CS 5010. 0 Hours.

Provides small-group discussion format to cover material in CS 5010. Prereq. Restricted to students in the College of Computer and Information Science. Coreq. CS 5010.

CS 5100. Foundations of Artificial Intelligence. 4 Hours.

Introduces the fundamental problems, theories, and algorithms of the artificial intelligence field. Topics include heuristic search and game trees, knowledge representation using predicate calculus, automated deduction and its applications, problem solving and planning, and introduction to machine learning. Required course work includes the creation of working programs that solve problems, reason logically, and/or improve their own performance using techniques presented in the course. Prereq. Experience in Java programming; restricted to students in the College of Computer and Information Science.

CS 5150. Game Artificial Intelligence. 4 Hours.

Offers an overview of classical and modern approaches to artificial intelligence in digital games. Focuses on the creation of believable agents and environments with the goal of providing a fun and engaging experience to a player. Covers player modeling, procedural content generation, behavior trees, interactive narrative, decision-making systems, cognitive modeling, and path planning. Explores different approaches for behavior generation, including learning and rule-based systems. Requires students to complete several individual assignments in these areas to apply the concepts covered in class. Students choose a group final project, which requires a report, to explore one aspect of artificial intelligence for games in further depth. Offers students an opportunity to learn team management and communication. Prereq. Knowledge of algorithms and experience with object-oriented design or functional programming; restricted to students in the College of Computer and Information Science.

CS 5200. Database Management Systems. 4 Hours.

Introduces relational database management systems as a class of software systems. Prepares students to be sophisticated users of database management systems. Covers design theory, query language, and performance/tuning issues. Topics include relational algebra, SQL, stored procedures, user-defined functions, cursors, embedded SQL programs, client-server interfaces, entity-relationship diagrams, normalization, B-trees, concurrency, transactions, database security, constraints, object-relational DBMSs, and specialized engines such as spatial, text, XML conversion, and time series. Includes exercises using a commercial relational or object-relational database management system. Prereq. Restricted to students in the College of Computer and Information Science and in the College of Engineering.

CS 5310. Computer Graphics. 4 Hours.

Introduces the fundamentals of two-dimensional and three-dimensional computer graphics, with an emphasis on approaches for obtaining realistic images. Covers two-dimensional algorithms for drawing lines and curves, anti-aliasing, filling, and clipping. Studies rendering of three-dimensional scenes composed of spheres, polygons, quadric surfaces, and bi-cubic surfaces using ray-tracing and radiosity. Includes techniques for adding texture to surfaces using texture and bump maps, noise, and turbulence. Prereq. Knowledge of linear algebra; restricted to students in the College of Computer and Information Science.

CS 5320. Digital Image Processing. 4 Hours.

Studies the fundamental concepts of digital image processing including digitization and display of images, manipulation of images to enhance or restore image detail, encoding (compression) of images, detection of edges and other object features in images, and the formation of computed tomography (CT) images. Introduces mathematical tools such as linear systems theory and Fourier analysis and uses them to motivate and explain these image processing techniques. Prereq. Knowledge of linear algebra; restricted to students in the College of Computer and Information Science.

CS 5330. Pattern Recognition and Computer Vision. 4 Hours.

Introduces fundamental techniques for low-level and high-level computer vision. Examines image formation, early processing, boundary detection, image segmentation, texture analysis, shape from shading, photometric stereo, motion analysis via optic flow, object modeling, shape description, and object recognition (classification). Discusses models of human vision (gestalt effects, texture perception, subjective contours, visual illusions, apparent motion, mental rotations, and cyclopean vision). Prereq. Knowledge of linear algebra; restricted to students in the College of Computer and Information Science.

CS 5335. Robotic Science and Systems. 4 Hours.

Introduces autonomous mobile robots with a focus on algorithms and software development, including closed-loop control, robot software architecture, wheeled locomotion and navigation, tactile and basic visual sensing, obstacle detection and avoidance, and grasping and manipulation of objects. Offers students an opportunity to progressively construct mobile robots from a predesigned electromechanical kit. The robots are controlled wirelessly by software of the students’ own design, built within a provided robotics software framework. Culminates in a project that connects the algorithms and hardware developed in the course with a selected topic in the current robotics research literature. Prereq. Restricted to students in the College of Computer and Information Science.

CS 5336. Lab for CS 5335. 0 Hours.

Offers a lab section to accompany CS 5335. Prereq. Restricted to students in the College of Computer and Information Science.

CS 5340. Computer/Human Interaction. 4 Hours.

Covers the principles of human-computer interaction and the design and evaluation of user interfaces. Topics include an overview of human information processing subsystems (perception, memory, attention, and problem solving); how the properties of these systems affect the design of user interfaces; the principles, guidelines, and specification languages for designing good user interfaces, with emphasis on tool kits and libraries of standard graphical user interface objects; and a variety of interface evaluation methodologies that can be used to measure the usability of software. Other topics may include World Wide Web design principles and tools, computer-supported cooperative work, multimodal and “next generation” interfaces, speech and natural language interfaces, and virtual reality interfaces. Course work includes both the creation and implementation of original user interface designs, and the evaluation of user interfaces created by others. Prereq. Knowledge of C programming language/UNIX; restricted to students in the College of Computer and Information Science.

CS 5350. Applied Geometric Representation and Computation. 4 Hours.

Surveys practical techniques for representing geometric objects in two and three dimensions, for computing their motions and interactions, and for human interfaces to manipulate them. These techniques are useful not only in graphics but also in robotics, computer vision, game design, geographic information systems, computer-aided design and manufacturing, spatial reasoning and planning, physical simulation, biomechanics, and the implementation of many types of human-computer interface. Prereq. Undergraduate background in algorithms; restricted to students in the College of Computer and Information Science.

CS 5400. Principles of Programming Language. 4 Hours.

Studies the basic components of programming languages, specification of syntax and semantics, and description and implementation of programming language features. Discusses examples from a variety of languages. Prereq. CS 5010; restricted to students in the College of Computer and Information Science.

CS 5500. Managing Software Development. 4 Hours.

Covers software life cycle models (waterfall, spiral, and so forth), domain engineering methods, requirements analysis methods (including formal specifications), software design principles and methods, verification and testing methods, resource and schedule estimation for individual software engineers, component-based software development methods and architecture, and languages for describing software processes. Includes a project where some of the software engineering methods (from domain modeling to testing) are applied in an example. Prereq. (a) CS 5010 and (b) admission to MS program or completion of all transition courses; restricted to students in the College of Computer and Information Science.

CS 5520. Mobile Application Development. 4 Hours.

Focuses on mobile application development on a mobile phone or related platform. Discusses memory management; user interface building, including both MVC principles and specific tools; touch events; data handling, including core data, SQL, XML, and JSON; network techniques and URL loading; and, finally, specifics such as GPS and motion sensing that may be dependent on the particular mobile platform. Students are expected to work on a project that produces a professional-quality mobile application and to demonstrate the application that they have developed. The instructor chooses a modern mobile platform to be used in the course. Prereq. Restricted to students in the College of Computer and Information Science.

CS 5600. Computer Systems. 4 Hours.

Studies the structure, components, design, implementation, and internal operation of computer systems, focusing mainly on the operating system level. Reviews computer hardware and architecture including the arithmetic and logic unit, and the control unit. Covers current operating system components and construction techniques including the memory and memory controller, I/O device management, device drivers, memory management, file system structures, and the user interface. Introduces distributed operating systems. Discusses issues arising from concurrency and distribution, such as scheduling of concurrent processes, interprocess communication and synchronization, resource sharing and allocation, and deadlock management and resolution. Includes examples from real operating systems. Exposes students to the system concepts through programming exercises. Prereq. Admission to MS program or completion of all transition courses; restricted to students in the College of Computer and Information Science.

CS 5610. Web Development. 4 Hours.

Discusses Web development for sites that are dynamic, data driven, and interactive. Focuses on the software development issues of integrating multiple languages, assorted data technologies, and Web interaction. Considers ASP.NET, C#, HTTP, HTML, CSS, XML, XSLT, JavaScript, AJAX, RSS/Atom, SQL, and Web services. Each student must deploy individually designed Web experiments that illustrate the Web technologies and at least one major integrative Web site project. Students may work in teams with the permission of the instructor. Each student or team must also create extensive documentation of their goals, plans, design decisions, accomplishments, and user guidelines. All source files must be open and be automatically served by a sources server. Prereq. Restricted to students in the College of Computer and Information Science.

CS 5620. Computer Architecture. 4 Hours.

Studies the design of digital computer system components including the CPU, the memory subsystem, and interconnection busses and networks. Explores modern design techniques for increasing computer system capacity. Emphasizes the growing gap between CPU and RAM speed, and the parallel operation of the growing number of functional units in a CPU. Topics include pipelining, cache, new CPU architecture models, memory bandwidth and latency, multiprocessing and parallel processing architectures, cache coherence, and memory consistency. Prereq. CS 5600 or CS 7600; restricted to students in the College of Computer and Information Science.

CS 5650. High Performance Computing. 4 Hours.

Introduces students to research in the domain of high performance computing. Each instance of this course covers a single topic with broad open questions. The required systems background needed to investigate these questions is covered in the first part of the course. Then, working in teams, students have an opportunity to address different aspects of the open questions so that in combination the entire class may learn more than any single team could accomplish. Example topics include use of new hardware such as GPUs on video boards; use of new software tools for multicore computing; development of check-pointing packages for more robust long computations; software for GUI window systems; and cloud computing. Prereq. CS 5600 or CS 7600; restricted to students in the College of Computer and Information Science.

CS 5700. Fundamentals of Computer Networking. 4 Hours.

Studies network protocols, focusing on modeling and analysis, and architectures. Introduces modeling concepts, emphasizing queuing theory, including Little’s theorem, M/M/1, M/M/m, M/D/1, and M/G/1 queuing systems. Discusses performance evaluation of computer networks including performance metrics, evaluation tools and methodology, simulation techniques, and limitations. Presents the different harmonizing functions needed for communication and efficient operation of computer networks and discusses examples of Ethernet, FDDI, and wireless networks. Covers link layer protocols including HDLC, PPP, and SLIP; packet framing; spanning tree and learning bridges, error detection techniques, and automatic repeat request algorithms; sliding window and reliable/ordered services; and queuing disciplines including FQ and WFQ. Introduces flow control schemes, such as window flow control and leaky bucket rate control schemes, and discusses congestion control and fairness. Prereq. Knowledge of probability theory; restricted to students in the College of Computer and Information Science and in the College of Engineering.

CS 5750. Social Computing. 4 Hours.

Offers a detailed look at popular social information systems. Studies models (both computational and sociological) of social information systems and the application of them both in theory and by analyzing real data from social network interactions. The recent popularity of online social media underlies a shift in the way people connect, communicate, and share content. When designing social computing systems, one must now understand and carefully consider the structure and use of the underlying social network. Considers questions such as: How does information spread through a social network? What mechanisms work best at encouraging collaboration? Prereq. CS 5600 or CS 5700; restricted to students in the College of Computer and Information Science.

CS 5770. Software Vulnerabilities and Security. 4 Hours.

Seeks to help students to become aware of systems security issues and to gain a basic understanding of security. Presents the principal software and applications used in the Internet, discussing in detail the related vulnerabilities and how they are exploited. Also discusses programming vulnerabilities and how they are exploited. Examines protection and detection techniques. Includes a number of practical lab assignments as well as a discussion of current research in the field. Prereq. Junior, senior, or graduate standing; restricted to students in the College of Computer and Information Science.

CS 5800. Algorithms. 4 Hours.

Presents the mathematical techniques used for the design and analysis of computer algorithms. Focuses on algorithmic design paradigms and techniques for analyzing the correctness, time, and space complexity of algorithms. Topics may include asymptotic notation, recurrences, loop invariants, Hoare triples, sorting and searching, advanced data structures, lower bounds, hashing, greedy algorithms, dynamic programming, graph algorithms, and NP-completeness. Prereq. Restricted to students in the College of Computer and Information Science and in the network science program.

CS 5850. Building Game Engines. 4 Hours.

Discusses the components of game engines and strategies for their software implementation. Includes graphics management algorithms (animation, scene graph, level of detail); basic artificial intelligence algorithms (search, decision making, sensing); and related algorithmic issues (networking, threading, input processing). Explores the use of data-driven software design. Offers students an opportunity to use a rendering engine and to build and integrate several software components to create a complete game engine. Requires students to work on individual assignments and then develop a project in a team, which requires a report. Offers students an opportunity to learn team/project management; work division; team communication; and the software development cycle of implementation, testing, critique, and further iteration. Prereq. Knowledge of computer graphics, differential calculus, operating systems concepts, and algorithms; restricted to students in the College of Computer and Information Science.

CS 5976. Directed Study. 2-4 Hours.

Focuses on student examining standard computer science material in fresh ways or new computer science material that is not covered in formal courses. Prereq. Restricted to students in the College of Computer and Information Science.

CS 5978. Independent Study. 2-4 Hours.

Offers independent work under the direction of members of the department on a chosen topic. Course content depends on instructor. Prereq. Restricted to students in the College of Computer and Information Science.

CS 5984. Research. 2-4 Hours.

Offers an opportunity to conduct research under faculty supervision. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6110. Knowledge-Based Systems. 4 Hours.

Focuses on the acquisition, organization, and use of world knowledge in computers, and the challenge of creating programs with common sense. Topics include knowledge representation and reasoning models beyond predicate calculus, Bayesian inference and other models of reasoning and decision making under uncertainty, rule-based expert systems, case-based and analogical reasoning, and introduction to natural language processing. Course work includes the creation of working programs that store and manipulate world knowledge using techniques presented in the course. Prereq. CS 5100; restricted to students in the College of Computer and Information Science.

CS 6120. Natural Language Processing. 4 Hours.

Provides an introduction to the computational modeling of human language, the ongoing effort to create computer programs that can communicate with people in natural language, and current applications of the natural language field, such as automated document classification, intelligent query processing, and information extraction. Topics include computational models of grammar and automatic parsing, statistical language models and the analysis of large text corpuses, natural language semantics and programs that understand language, models of discourse structure, and language use by intelligent agents. Course work includes formal and mathematical analysis of language models, and implementation of working programs that analyze and interpret natural language text. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6130. Affective Computing. 4 Hours.

Studies affective computing—computing that relates to, arises from, or influences emotions. Offers an overview of the theory of human emotion (how it arises from and influences cognition, the body, and the social environment) and computational techniques for modeling human emotion processes as well as for recognizing and synthesizing emotional behavior. Discusses how these can be applied to application design. Offers students an opportunity to gain a strong background in the theory and practice of human-centered computing as it relates to games, immersive environments, and pedagogical applications. Brings together students from different disciplines to work together and learn from each other. Prereq. Restricted to students in the College of Computer and Information Science and in the College of Science. Cross-listed with PSYC 6130.

CS 6140. Machine Learning. 4 Hours.

Provides a broad look at a variety of techniques used in machine learning and data mining, and also examines issues associated with their use. Topics include algorithms for supervised learning including decision tree induction, artificial neural networks, instance-based learning, probabilistic methods, and support vector machines; unsupervised learning; and reinforcement learning. Also covers computational learning theory and other methods for analyzing and measuring the performanceof learning algorithms. Course work includes a programming term project. Prereq. CS 5800; restricted to students in the College of Computer and Information Science.

CS 6200. Information Retrieval. 4 Hours.

Provides an introduction to information retrieval systems and different approaches to information retrieval. Topics covered include evaluation of information retrieval systems; retrieval, language, and indexing models; file organization; compression; relevance feedback; clustering; distributed retrieval and metasearch; probabilistic approaches to information retrieval; Web retrieval; filtering, collaborative filtering, and recommendation systems; cross-language IR; multimedia IR; and machine learning for information retrieval. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6220. Data Mining Techniques. 4 Hours.

Covers various aspects of data mining, including classification, prediction, ensemble methods, association rules, sequence mining, and cluster analysis. The class project involves hands-on practice of mining useful knowledge from a large data set. Prereq. CS 5800 or CS 7800; restricted to students in the College of Computer and Information Science.

CS 6240. Parallel Data Processing in MapReduce. 4 Hours.

Introduces the MapReduce programming model and the core technologies it relies on in practice, such as a distributed file system and the distributed consensus protocol. Also discusses related approaches and technologies from distributed databases and cloud computing. Emphasizes practical examples and hands-on programming experiences. Examines both plain MapReduce and database-inspired advanced programming models running on top of a MapReduce infrastructure. Prereq. CS 5800 or permission of instructor; restricted to students in the College of Computer and Information Science.

CS 6310. Computational Imaging. 4 Hours.

Introduces the latest computational methods in digital imaging that overcome the traditional limitations of a camera and enable novel imaging applications. Provides a practical guide to topics in image capture and manipulation methods for generating compelling pictures for computer graphics and for extracting scene properties for computer vision, with several examples. Prereq. CS 5320 or EECE 7311; restricted to students in the College of Computer and Information Science.

CS 6350. Empirical Research Methods. 4 Hours.

Presents an overview of methods for conducting empirical research within computer science. These methods help provide objective answers to questions about the usability, effectiveness, and acceptability of systems. The course covers the basics of the scientific method, building from a survey of objective measures to the fundamentals of hypothesis testing using relatively simple research designs, and on to more advanced research designs and statistical methods. The course also includes a significant amount of fieldwork, spanning the design, conduct, and presentation of small empirical studies. Prereq. Junior, senior, or graduate standing; restricted to students in the College of Computer and Information Science.

CS 6410. Compilers. 4 Hours.

Expects each student to write a small compiler. Topics include parser generation, abstract syntax trees, symbol tables, type checking, generation of intermediate code, simple code improvement, register allocation, run-time structures, and code generation. Prereq. CS 5400 or CS 7400; restricted to students in the College of Computer and Information Science and in the College of Engineering.

CS 6412. Semantics of Programming Language. 4 Hours.

Studies mathematical models for the behavior of programming languages. Topics include operational, denotational, and equational specifications; Lambda-calculi and their properties; applications of these techniques, such as rapid prototyping and correctness of program optimizations. Prereq. (a) CS 5400 or CS 7400 and (b) knowledge of discrete mathematics; restricted to students in the College of Computer and Information Science.

CS 6510. Advanced Software Development. 4 Hours.

Designed to integrate academic concepts and practical experience of software design by having students work as part of a programming team, with an option to lead a subteam. Offers students an opportunity to study, in-depth, some aspects of the development process. The goal is to have students participate in a large-scale project, taking time to reflect and analyze the work and the process, rather than concentrating exclusively on the final product. Prereq. (a) CS 5010 and CS 5500 or (b) permission of instructor; restricted to students in the College of Computer and Information Science.

CS 6515. Software Development. 4 Hours.

Covers proven techniques for constructing maintainable software. Includes problem and data analysis, data definitions, concise specifications, interfaces, example and test data design, program design based on data definitions, and testing. Offers students an opportunity to practice what they learn and learn from what they practice through an evolving semester-long project in the programming language of their choice. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6520. Methods of Software Development. 4 Hours.

Studies concepts of object-oriented programming that form the basis for components (generic programming, programming by contracts, or programming with metaclasses), software architecture for supporting components (implicit invocation, filters, or reflection), and the concrete realizations of components in some industrial standards (JavaBeans, EJB, CORBA, or COM/DCOM). Also covers selected topics in component research. Students complete a project where some creation, deployment, and evolution methods of software components are applied. Prereq. CS 5500; restricted to students in the College of Computer and Information Science.

CS 6530. Analysis of Software Artifacts. 4 Hours.

Addresses all kinds of software artifacts—specifications, designs, code, and so on—and covers both traditional analyses, such as verification and testing, and promising new approaches, such as model checking, abstract execution, and new type systems. Focuses on the analysis of function (for finding errors in artifacts and to support maintenance and reverse engineering), but the course also address other kinds of analysis (such as performance and security). Prereq. CS 5500; restricted to students in the College of Computer and Information Science.

CS 6535. Engineering Reliable Software. 4 Hours.

Continues the exploration of several themes from CS 5010: unit testing, random testing, and logical reasoning about software. Specifically revisits the idea of systematic design and its connection to making logical claims about the workings of programs. After an introduction to the ACL2 programming language and theorem prover, offers students an opportunity to redesign interactive games (e.g., “Space Invaders”) and work on turning them into reliable projects. Prereq. CS 5010 or permission of instructor; restricted to students in the College of Computer and Information Science.

CS 6540. Foundations of Formal Methods and Software Analysis. 4 Hours.

Covers necessary mathematical background such as first-order logic, and some measure theory. Studies the formal methods in more depth and breadth. Discusses the current state of the art in verification and semantics of probabilistic, real-time, and hybrid systems. Prereq. CS 6520; restricted to students in the College of Computer and Information Science.

CS 6610. Parallel Computing. 4 Hours.

Studies the principles of parallel processing, a variety of parallel computer architecture models including SIMD, MIMD, dataflow, systolic arrays, and network of workstations, and algorithms for parallel computation on the various models. Topics include interconnection network design, memory organization, cache and bus design, processor technologies, algorithms for sorting, combinatorial, and numerical problems, graph algorithms, matrix multiplication, and FFT, and the mapping of these algorithms to different architectures. Prereq. CS 5600 and CS 5800; restricted to students in the College of Computer and Information Science.

CS 6650. Building Scalable Distributed Systems. 4 Hours.

Covers the essential elements of distributed, concurrent systems and builds upon that knowledge with engineering principles and practical experience with state-of-the-art technologies and methods for building scalable systems. Scalability is an essential quality of internet-facing systems and requires specialized skills and knowledge to build systems that scale at low cost.

CS 6710. Wireless Network. 4 Hours.

Covers both theoretical issues related to wireless networking and practical systems for both wireless data networks and cellular wireless telecommunication systems. Topics include fundamentals of radio communications, channel multiple access schemes, wireless local area networks, routing in multihop ad hoc wireless networks, mobile IP, and TCP improvements for wireless links, cellular telecommunication systems, and quality of service in the context of wireless networks. Requires a project that addresses some recent research issues in wireless and mobile networking. Prereq. CS 5700; restricted to students in the College of Computer and Information Science.

CS 6740. Network Security. 4 Hours.

Studies the theory and practice of computer security, focusing on the security aspects of multiuser systems and the Internet. Introduces cryptographic tools, such as encryption, key exchange, hashing, and digital signatures in terms of their applicability to maintaining network security. Discusses security protocols for mobile networks. Topics include firewalls, viruses, Trojan horses, password security, biometrics, VPNs, and Internet protocols such as SSL, IPSec, PGP, SNMP, and others. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6750. Cryptography and Communications Security. 4 Hours.

Studies the design and use of cryptographic systems for communications and other applications such as e-commerce. Discusses the history of cryptographic systems, the mathematical theory behind the design, their vulnerability, and the different cryptanalytic attacks. Topics include stream ciphers including shift register sequences; block ciphers, such as DES and AES; public-key systems including RSA, discrete logarithms; signature schemes; hash functions, such as MD5 and SHA1; and protocol schemes including identification schemes, zero-knowledge proofs, authentication schemes, and secret sharing schemes. Discusses key management problems including Needham-Schroeder protocols and certificates. Prereq. CS 5800 or CS 7800; restricted to students in the College of Computer and Information Science.

CS 6754. Secure Wireless Ad-hoc Robots on Mission (SWARM) 1. 4 Hours.

Exposes students to the concepts underlying the design of robust and secure heterogeneous wireless networking of mobile robots: internetworking, security, wireless communication, embedded development, and mobile phone platforms. Students in this project-oriented course form mixed teams with the goal of designing and building rescue-mission-oriented heterogeneous wireless systems operating in adversarial environments. These systems consist of off-the-shelf robots enhanced by the students with a low-power control and sensing embedded system; a low-power digital radio frequency communication network; a coordination unit connected to the Internet; and a messaging and command system based on cell phones. The course culminates in a competition between teams. Students are graded based on their designs, presentations, innovation, robustness, and competition performance. Graduate students are expected to make a research contribution. Prereq. Open to students from computer/information science, electrical/computer engineering, mechanical engineering, and mathematics.

CS 6756. Secure Wireless Ad-hoc Robots on Mission (SWARM) 2. 4 Hours.

Continues CS 6754. Based on the experiences in CS 6754, student teams have an opportunity to build more autonomous systems that can navigate areas where wireless communication or direct visibility are not possible. The systems must be resilient to more sophisticated denial-of-service attacks and need to more carefully account for energy consumption expended on mobility, communication, and meeting the mission task. Graduate students are expected to make a research contribution. Prereq. CS 6754; restricted to students in the College of Computer and Information Science.

CS 6760. Privacy, Security, and Usability. 4 Hours.

Challenges conventional wisdom and encourages students to discover ways that security, privacy, and usability can be made synergistic in system design. Usability and security are widely seen as two antagonistic design goals for complex computer systems. Topics include computer forensics, network forensics, user interface design, backups, logging, economic factors affecting adoption of security technology, trust management, and related public policy. Uses case studies such as PGP, S/MIME, and SSL. Introduces basic cryptography and hash function as it is needed. Course work includes analysis of papers, problem sets, and a substantial term project. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6800. Application of Information Theory. 4 Hours.

Introduces information theory and its applications to various computational disciplines. Covers the basic concepts of information theory, including entropy, relative entropy, mutual information, and the asymptotic equipartition property. Concentrates on applications of information theory to computer science and other computational disciplines, including compression, coding, Markov chains, machine learning, information retrieval, statistics, computational linguistics, computational biology, wired and wireless networks, and image and speech processing. The course is self-contained; no prior knowledge of information theory is required or assumed. Prereq. Undergraduate course in probability; restricted to students in the College of Computer and Information Science.

CS 6810. Distributed Algorithms. 4 Hours.

Covers the design and analysis of algorithms and problems arising in distributed systems, with emphasis on network algorithms. The main concerns are efficiency of computation and communication, fault tolerance, and asynchrony. Topics include leader election, graph algorithms, datalink protocols, packet routing, logical synchronization and clock synchronization, resource allocation, self-stabilization of network protocols, and graph partitions. Prereq. CS 5800 or CS 7800; restricted to students in the College of Computer and Information Science.

CS 6949. Graduate Cooperative Education Seminar. 1 Hour.

Intended to prepare graduate students in computer and information science for co-op. Topics include resumé writing, interviewing, job search strategy, ethics, professional behavior, and the college’s co-op policies. Students intending to participate in a co-op or internship must satisfactorily complete this course, which is typically taken during the student’s first semester. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6960. Exam Preparation—Master’s. 0 Hours.

Offers the student the opportunity to prepare for the master’s qualifying exam under faculty supervision. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6962. Elective. 1-4 Hours.

Offers elective credit for courses taken at other academic institutions. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6964. Co-op Work Experience. 0 Hours.

Provides eligible students with an opportunity for work experience. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6965. Co-op Work Experience Abroad. 0 Hours.

Provides eligible students with an opportunity for work experience abroad. Prereq. Restricted to students in the College of Computer and Information Science.

CS 6966. Practicum. 2-4 Hours.

Provides eligible students with an opportunity for practical experience. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7140. Advanced Machine Learning. 4 Hours.

Covers topics in advanced machine learning. Presents materials in the current machine learning literature. Focuses on graphical models, latent variable models, Bayesian inference, and nonparametric Bayesian methods. Seeks to prepare students to do research in machine learning. Expects students to read conference and journal articles, present these articles, and write an individual research paper. Prereq. CS 6140, EECE 7204, or EECE 7313; restricted to students in the College of Computer and Information Science and in the College of Engineering. Cross-listed with EECE 7397.

CS 7170. Seminar in Artificial Intelligence. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in artificial intelligence. May be repeated for credit for PhD students; faculty supervisor and topics vary from semester to semester. Prereq. CS 5100; restricted to students in the College of Computer and Information Science.

CS 7180. Special Topics in Artificial Intelligence. 4 Hours.

Offers various topics on artificial intelligence. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7270. Seminar in Database Systems. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in database systems. Faculty supervisor and topics vary from semester to semester. May be repeated for credit for PhD students. Prereq. CS 5200; restricted to students in the College of Computer and Information Science.

CS 7280. Special Topics in Database Management. 4 Hours.

Offers various topics. Possible areas include object-oriented database systems and distributed database systems. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7290. Special Topics in Data Science. 4 Hours.

Offers special topics in data science, in areas including machine learning, statistics, data mining, parallel and distributed data analysis, database systems, information retrieval, knowledge representation, information visualization, natural language processing, computational biology and bioinformatics, computational social science, digital humanities, health informatics, business, and predictive analytics. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7370. Seminar in Graphics/Image Processing. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in graphics and image processing. May be repeated for credit for PhD students; faculty supervisor and topics vary from semester to semester . Prereq. CS 5310; restricted to students in the College of Computer and Information Science.

CS 7380. Special Topics in Graphics/Image Processing. 4 Hours.

Offers various topics on graphics/image processing. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7381. Lab for CS 7380. 0 Hours.

Offers a lab section to accompany CS 7380. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7400. Intensive Principles of Programming Languages. 4 Hours.

Studies the basic components of programming languages, specification of syntax and semantics, and description and implementation of programming language features. Discusses examples from a variety of languages. Prereq. Computer science PhD students only.

CS 7470. Seminar in Programming Languages. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in programming languages. Faculty supervisor and topics vary from semester to semester. May be repeated for credit for PhD students. Prereq. CS 5400 or CS 7400; restricted to students in the College of Computer and Information Science.

CS 7480. Special Topics in Programming Language. 4 Hours.

Offers various topics in programming language. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7485. Special Topics in Formal Methods. 4 Hours.

Offers various topics in formal methods. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7570. Seminar in Software Development. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in software development. Faculty supervisor and topics vary from semester to semester. May be repeated for credit for PhD students. Prereq. CS 5500; restricted to students in the College of Computer and Information Science.

CS 7575. Seminar in Software Engineering. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in software engineering. Faculty supervisor and topics vary from semester to semester. May be repeated for credit for PhD students. Prereq. CS 6520; restricted to students in the College of Computer and Information Science.

CS 7580. Special Topics in Software Engineering. 4 Hours.

Offers various topics on software engineering. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7600. Intensive Computer Systems. 4 Hours.

Studies the structure, components, design, implementation, and internal operation of computer systems, focusing on the operating system level. Reviews computer hardware and architecture including the arithmetic and logic unit, and the control unit. Covers current operating system components and construction techniques including the memory and memory controller, I/O device management, device drivers, memory management, file system structures, and the user interface. Discusses distributed operating systems, real-time systems, and addresses concurrent processes, scheduling, interprocess communication, and synchronization. Discusses relevant distributed algorithms. Also covers design and analysis techniques for desirable properties in computer systems including functional correctness (in the absence of faults), performance and throughput, fault-tolerance and reliability, real-time response, security, and quality of service. Draws examples from real operating systems. Emphasizes abstraction, while programming exercises are used to facilitate the understanding of concepts. Prereq. Computer science PhD students only.

CS 7670. Seminar in Computer Systems. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in computer systems. Faculty supervisor and topics vary from semester to semester. May be repeated for credit for PhD students. Prereq. CS 5600 or CS 7600; restricted to students in the College of Computer and Information Science.

CS 7680. Special Topics in Computer Systems. 4 Hours.

Offers various topics on computer systems. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7770. Seminar in Computer Networks. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in computer networks. Faculty supervisor and topics vary from semester to semester. May be repeated for credit for PhD students. Prereq. CS 5700; restricted to students in the College of Computer and Information Science.

CS 7775. Seminar in Computer Security. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in cryptography and computer security. Faculty supervisor and topics vary from semester to semester. May be repeated for credit for PhD students. Prereq. CS 6750; restricted to students in the College of Computer and Information Science.

CS 7780. Special Topics in Networks. 4 Hours.

Offers various topics on networks. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7785. Special Topics in Network Science. 4 Hours.

Covers various topics in network science. Prereq. Restricted to students in the College of Computer and Information Science, the College of Engineering, and the College of Science.

CS 7800. Advanced Algorithms. 4 Hours.

Presents advanced mathematical techniques for designing and analyzing computer algorithms. Reviews some of the material covered in CS 5800 and then covers advanced topics. Emphasizes theoretical underpinnings of techniques used to solve problems arising in diverse domains. Topics include asymptotic analysis, advanced data structures, dynamic programming, greedy algorithms and matroid theory, amortized analysis, randomization, string matching, algebraic algorithms, and approximation algorithms. Introduces Turing machines, P and NP classes, polynomial-time reducibility, and NP completeness. Prereq. Computer science PhD students only.

CS 7805. Theory of Computation. 4 Hours.

Examines formal models of computation, notions of undecidability, and basic complexity theory. Models of computation include finite state automata, pushdown automata, and Turing machines. Discusses the properties of regular sets and context-free languages. Also covers partial recursive functions, primitive recursive functions, recursively enumerable sets, Turing decidability, and unsolvable problems. Discusses the concept of reductions, time and space complexity classes, and the polynomial-time hierarchy. Prereq. CS 7800; computer science PhD students only.

CS 7870. Seminar in Theoretical Computer Science. 2-4 Hours.

Gives students the opportunity to read and present various survey and research papers in theoretical computer science. May be repeated for credit for PhD students; faculty supervisor and topics vary from semester to semester. Prereq. CS 5800 or CS 7800; restricted to students in the College of Computer and Information Science.

CS 7880. Special Topics in Theories of Computer Science. 4 Hours.

Covers various topics including advanced cryptography, approximation algorithms, computational algebra, formal verification, network algorithms, online computation, parallel computing, and randomness and computation. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7962. Elective. 2-4 Hours.

Offers elective credit for courses taken at other academic institutions. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7976. Directed Study. 2-4 Hours.

Focuses on student examining standard computer science material in fresh ways or new computer science material that is not covered in formal courses. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7978. Independent Study. 2-4 Hours.

Offers independent work under the direction of members of the department on a chosen topic. Course content depends on instructor. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7990. Thesis. 4 Hours.

Offers selected work with the agreement of a project supervisor. Prereq. Restricted to students in the College of Computer and Information Science.

CS 7994. Thesis Continuation—Part Time. 0 Hours.

Offers continued thesis work conducted under the supervision of a departmental faculty. Prereq. CS 7990; restricted to students in the College of Computer and Information Science.

CS 7996. Thesis Continuation. 0 Hours.

Offers continued thesis work conducted under the supervision of a departmental faculty. Prereq. CS 7990; restricted to students in the College of Computer and Information Science.

CS 8674. Master’s Project. 4 Hours.

Offers selected work with the agreement of a project supervisor. Prereq. Restricted to students in the College of Computer and Information Science.

CS 8890. PhD Qualifying Examination Completion. 0 Hours.

Indicates that the doctoral student has completed the requirements for the qualifying examination. Restricted to students in the College of Computer and Information Science.

CS 8949. Research Work Experience. 0 Hours.

Provides an opportunity for all doctoral students to engage in industry research in the area of their dissertation. Doctoral students register for this course before starting their off-campus internships. Prereq. Restricted to students in the College of Computer and Information Science.

CS 8960. Exam Preparation—Doctoral. 0 Hours.

Offers the student the opportunity to prepare for the PhD qualifying exam under faculty supervision. Prereq. Restricted to students in the College of Computer and Information Science.

CS 8964. Co-op Work Experience. 0 Hours.

Provides eligible students with an opportunity for work experience. Prereq. Restricted to students in the College of Computer and Information Science.

CS 8982. Readings. 1-8 Hours.

Offers selected readings under the supervision of a faculty member. Prereq. Restricted to students in the College of Computer and Information Science.

CS 8984. Research. 2-4 Hours.

Offers an opportunity to conduct research under faculty supervision. Prereq. Restricted to students in the College of Computer and Information Science.

CS 8986. Research. 2-4 Hours.

Offers an opportunity to conduct full-time research under faculty supervision. Prereq. Restricted to students in the College of Computer and Information Science.

CS 9000. PhD Candidacy Achieved. 0 Hours.

Indicates successful completion of the doctoral comprehensive exam. Prereq. Restricted to students in the College of Computer and Information Science.

CS 9984. Research. 2-4 Hours.

Offers an opportunity to conduct research under faculty supervision. Prereq. Restricted to students in the College of Computer and Information Science.

CS 9986. Research. 2-4 Hours.

Offers an opportunity to conduct full-time research under faculty supervision. Prereq. Restricted to students in the College of Computer and Information Science.

CS 9990. Dissertation. 2-4 Hours.

Offers selected work with the agreement of a thesis supervisor. Prereq. Computer science students only.

CS 9996. Dissertation Continuation. 0 Hours.

Continues work with the agreement of a thesis supervisor. Prereq. CS 9990; restricted to students in the College of Computer and Information Science.

DS 5110. Introduction to Data Management and Processing. 4 Hours.

Introduces relational database management systems as well as modern parallel data processing systems such as MapReduce. Topics in relational databases include relational algebra; SQL; stored procedures; user-defined functions; cursors; embedded SQL programs; client-server interfaces; entity-relationship diagrams; normalization; B-trees; concurrency; transactions; database security; constraints; object-relational DBMSs; and specialized engines such as spatial, text, XML conversion, and time series. Includes exercises using a commercial relational or object-relational database management system. Topics in parallel data processing include MapReduce programming, introduction to cloud computing, distributed databases, and distributed file systems.

DS 5220. Supervised Machine Learning and Learning Theory. 4 Hours.

Supervised machine learning is the study and design of algorithms that enables computers/machines to learn from experience or data, given examples of data with a known outcome of interest. This course is an introduction to supervised machine learning. Provides a broad view of models and algorithms for supervised decision making. Discusses the methodological foundations behind the models and the algorithms, as well as issues of practical implementation and use, and techniques for assessing the performance. Includes a term project involving programming and/or work with real-life data sets. Prereq. CS 5800 or EECE 7205 (either may be taken concurrently); students should be proficient in programming languages such as Python, R, or Matlab.

DS 5230. Unsupervised Machine Learning and Data Mining. 4 Hours.

Unsupervised machine learning and data mining is the process of discovering and summarizing patterns from large amounts of data, without examples of data with a known outcome of interest. This course is an introduction to unsupervised machine learning and data mining. Seeks to provides a broad view of models and algorithms for unsupervised data exploration. Discusses the methodological foundations behind the models and the algorithms, as well as issues of practical implementation and use, and techniques for assessing the performance. Includes a term project involving programming and/or work with real-life datasets. Prereq. CS 5800 or EECE 7205 (either may be taken concurrently); students should be proficient in programming languages such as Python, R, or Matlab.