Computer Science
View courses in
- Computer Science
- All Departments
- African American Studies
- African Studies: Culture (in English)
- African Studies: East African Languages: Kiswahili (Swahili)
- African Studies: East, West & South African Languages: Amharic, Igbo, isiZulu
- African Studies: South African Languages: isiXhosa
- African Studies: West African Languages: Hausa
- African Studies: West African Languages: Wolof
- American Studies
- Anthropology
- Arabic: Language, Literature, Culture (including courses in English)
- Archaeology
- Astronomy
- Biochemistry & Molecular Biology
- Biology
- Chemistry
- Chinese: Language, Literature, Culture (including courses in English)
- Classical Studies: incl. Classical Civilization and Tradition (in English), Ancient Greek, and Latin
- Classical Studies: Modern Greek
- Comparative Literature
- Computer Science
- Core Curriculum
- Earth & Environment
- Economics
- Editorial Studies
- English
- First Year Experience
- French: Language, Literature, Linguistics, Culture (including courses in English)
- German: Language, Literature, Culture (including courses in English)
- Hebrew: Language, Literature, Culture (including courses in English)
- Hindi-Urdu: Language, Literature, Culture (including courses in English)
- History
- History of Art & Architecture
- International Relations
- Italian: Language, Literature, Culture (including courses in English)
- Japanese: Language, Literature, Culture (including courses in English)
- Korean: Language, Literature, Culture (including courses in English)
- Linguistics
- Marine Science
- Mathematics & Statistics
- Music
- Natural Sciences
- Neuroscience
- Persian: Language, Literature, Culture (including courses in English)
- Philosophy
- Physics
- Political Science
- Portuguese: Language, Literature, Culture (including courses in English)
- Psychology
- Religion
- Russian: Language, Literature, Culture (including courses in English)
- SEA Semester
- Sociology
- Spanish: Language, Literature, Culture (including courses in English)
- Turkish: Language, Literature, Culture (including courses in English)
- Women’s, Gender, & Sexuality Studies
- Writing
-
CAS CS 410: Advanced Software Systems
Undergraduate Prerequisites: CAS CS 112; ; CASCS210 is recommended.
Systems programming including such topics as project management, tools, I/O networking, multiprocessing, exception handling, and system services. Other topics are explored using C and Perl under the UNIX operating system. Requires a working knowledge of the C programming language and experience with UNIX as a user, or equivalent. -
CAS CS 411: Software Engineering
Undergraduate Prerequisites: CAS CS 112; or consent of instructor.
Introduction to the construction of reliable software. Topics may include software tools, software testing methodologies, retrofitting, regression testing, structured design and structured programming, software characteristics and quality, complexity, entropy, deadlock, fault tolerance, formal proofs of program correctness, chief program teams, and structured walk-throughs. -
CAS CS 440: Introduction to Artificial Intelligence
Undergraduate Prerequisites: CAS CS 112; and CASCS132 or CASMA242, or consent of instructor.
Introduction to computer systems that exhibit intelligent behavior, in particular, perceptual and robotic systems. Topics include human computer interfaces, computer vision, robotics, game playing, pattern recognition, knowledge representation, planning. -
CAS CS 451: Distributed Systems
Undergraduate Prerequisites: CAS CS 112 and CAS CS 210.
Programming-centric introduction to how networks of computers are structured to operate as coherent single systems. Introducing principles of architecture, processes, communications, naming, synchronization, consistency and replication, fault tolerance and security, and paradigms such as web-based, object-based, file system, and consistency-based. -
CAS CS 455: Computer Networks
Undergraduate Prerequisites: CAS CS 112 and CAS CS 350; or consent of instructor.
Concepts underlying the design of high-performance computer networks and scalable protocols. Topics include Internet design principles and methodology, TCP/IP implementation, packet switching and routing algorithms, multicast, quality of service considerations, error detection and correction, and performance evaluation. -
CAS CS 460: Introduction to Database Systems
Undergraduate Prerequisites: CAS CS 112; or equivalent.
Introduction to database management systems. Examines entity-relationship, relational, and object-oriented data models; commercial query languages: SQL, relational algebra, relational calculus, and QBE; file organization, indexing and hashing, query optimization, transaction processing, concurrency control and recovery,integrity, and security. -
CAS CS 480: Introduction to Computer Graphics
Undergraduate Prerequisites: CAS CS 112; and CASCS132 or CASMA242.
Introduction to computer graphics algorithms, programming methods, and applications. Focus on fundamentals of two- and three-dimensional raster graphics: scan-conversion, clipping, geometric transformations, and camera modeling. Introduces concepts in computational geometry, computer-human interfaces, animation, and visual realism. -
CAS CS 491: Directed Study
Undergraduate Prerequisites: consent of instructor and approval of the Directed Study Committee (CAS Room 105).
-
CAS CS 492: Directed Study
Undergraduate Prerequisites: consent of instructor and approval of the Directed Study Committee (CAS Room 105).
-
CAS CS 511: Object-Oriented Software Principles
Undergraduate Prerequisites: CAS CS 320 and CAS CS 411; or consent of instructor.
Specification, programming, and analysis of large-scale, reliable, and reusable Java software using object-oriented design principles. Topics may include object-oriented programming, object models, memory models, inheritance, exceptions, namespaces, data abstraction, design against failure, design patterns, reasoning about objects. -
CAS CS 512: Formal Methods for High-Assurance System Design and Analysis
Undergraduate Prerequisites: CAS CS 320 or CAS CS 330 or CAS CS 350; or consent of instructor.
Introduction to formal specification, analysis, and verification of computer system behavior. Topics include formal logical reasoning about computer programs and systems, automated and semi-automated verification, and algorithmic methodologies for ascertaining that a computing system satisfies its formally specified properties. -
CAS CS 520: Programming Languages
Undergraduate Prerequisites: CAS CS 320; or consent of instructor.
Graduate Prerequisites: CAS CS 320 or CAS CS 332; or consent of instructor.
Concepts of programming languages: data, storage, control, and definition structures; concurrent and distributed programming; functional and logic programming. -
CAS CS 525: Compiler Design Theory
Undergraduate Prerequisites: CAS CS 320; , or consent of instructor.
Graduate Prerequisites: CAS CS 320 or CAS CS 332.
Covers the basic mathematical theory underlying the design of compilers and other language processors and shows how to use that theory in practical design situations. Topics may include lexical analysis, parsing, syntax-directed translation, code optimization, and code generation. -
CAS CS 530: Advanced Algorithms
Undergraduate Prerequisites: CAS CS 330; or consent of instructor.
Graduate Prerequisites: CAS CS 330; or consent of instructor.
Studies the design and efficiency of algorithms in several areas of computer science. Topics are chosen from graph algorithms, sorting and searching, NP-complete problems, pattern matching, parallel algorithms, and dynamic programming. -
CAS CS 535: Complexity Theory
Undergraduate Prerequisites: CAS CS 332; or consent of instructor.
Graduate Prerequisites: CAS CS 332.
Covers topics of current interest in the theory of computation chosen from computational models, games and hierarchies of problems, abstract complexity theory, informational complexity theory, time-space trade-offs, probabilistic computation, and recent work on particular combinatorial problems. -
CAS CS 537: Randomness in Computing
Undergraduate Prerequisites: CAS CS 330 or CAS CS 530; . CASCS535 is recommended or consent of instructor.
Graduate Prerequisites: CASCS330 or CASCS530 is recommended.
Survey of probabilistic ideas of the theory of computation. Topics may include Monte Carlo and Las Vegas probabilistic computations; average case complexity and analysis; random and pseudorandom strings; games and cryptographic protocol; information; inductive inference; reliability;others. (Offered alternate years.) -
CAS CS 538: Fundamentals of Cryptography
Undergraduate Prerequisites: CAS CS 131 and CAS CS 237; or consent of instructor.
Graduate Prerequisites: CAS CS 332.
Basic Algorithms to guarantee confidentiality and authenticity of data. Definitions and proofs of security for practical constructions. Topics include perfectly secure encryption, pseudorandom generators, RSA and Elgamal encryption, Diffie-Hellman key agreement, RSA signatures, secret sharing, block and stream ciphers. -
CAS CS 542: Machine Learning
Undergraduate Prerequisites: CAS CS 112; or equivalent programming experience, and familiarity with linear algebra, probability, and statistics.
Introduction to modern machine learning concepts, techniques, and algorithms. Topics include regression, kernels, support vector machines, feature selection, boosting, clustering, hidden Markov models, and Bayesian networks. Programming assignments emphasize taking theory into practice, through applications on real-world data sets. -
CAS CS 548: Advanced Cryptography
Undergraduate Prerequisites: CAS CS 538; or consent of instructor.
Continuation of CAS CS 538. Advanced techniques to preserve confidentiality and authenticity against active attacks, zero-knowledge proofs; Fiat-Shamir signature schemes; non-malleable public-key encryption; authenticated symmetric encryption; secure multiparty protocols for tasks ranging from Byzantine agreement to mental poker to threshold cryptography. -
CAS CS 552: Introduction to Operating Systems
Undergraduate Prerequisites: CAS CS 112 and CAS CS 210; and competency with C/C++. CASCS350 is recommended, or consent of instructor.
Examines process synchronization; I/O techniques, buffering, file systems; processor scheduling; memory management; virtual memory; job scheduling, resource allocation; system modeling; and performance measurement and evaluation.
