CS 127
Computing, Technology, and Society
(1) An overview of computer science. Topics include history and future of computing, robotics, computers in fiction, computer hardware, artificial intelligence, networking and the World-Wide-Web, social and ethical implications of technology, and an introduction to structured problem solving in a high-level programming language. Designed for non-majors.Not open to students with credit in CS 142 or above; W;
Staff
CS 141
Introduction to Computer Science
(1) An introduction to the fundamental principles of computer science focusing on problem solving and abstraction techniques. Students will learn to break down problems and specify solutions at a level of detail that lets them be executed by a machine. Specific concepts taught include control structures, data types, and object-oriented design. The course is currently taught using Java. MNS;
QL;
Staff
CS 142
Program Design and Methodology
(1) A continued study of principles of computer science and programming. This course teaches students how to design increasingly complex programs in a manageable way, using abstract data structures, data encapsulation, and other software engineering concepts. It also addresses some of the classic algorithms in computer science and begins studying how to analyze their complexity. This course is currently taught using Java.MNS;
Prereq : CS 141 or 147 or permission of the instructor;
QL;
Staff
CS 147
Introduction to Scientific Computing and Visualization
(1) This course examines computation with an emphasis on the processes of modeling, simulation, visualization and evaluation. Possible topics related to the four areas include: (modeling) statistical modeling; (simulation) solving linear and non-linear systems, discrete-event simulations; visualization techniques, data mining; (evaluation) connection of results back to case studies of interest from areas such as biology, environmental studies, geology, chemistry, physics, and economics.MNS;
Prereq : satisfaction of the Mathematics Proficiency requirement, at least one science course is recommended, or permission of the instructor;
QL;
Staff
CS 160
Programming Practice
(1/2) Individual instruction in programming and laboratory skills. The student will implement several programming projects over the course of the term, regularly meeting with the supervising faculty member. Projects will be appropriate to the level of the student.
Prereq : CS 141 or CS 147;
May be repeated once for credit;
Staff
CS 162
Survey of Information Management
(1) See description for CS 262. CS 162 is designed for non-majors; there is no programming required for this course.
Prereq : satisfaction of math proficiency requirement;
QL;
J.Spacco;
CS 180
Programming Language and Tools Workshop
(1/2) Students will study programming languages and development environment topics. This course will be offered as needed to support the Computer Science curriculum. Programming languages offered may include, but are
not limited to: Lisp, Scheme, Prolog, C, Python, Perl, C++. Tools offered may include Linux/Unix system administration, shell programming, and OpenGL.
Prereq : CS 142 or permission of the instructor;
Version CS 180F Programming Challenges is graded on an S/U basis. May be repeated for credit using different languages.;
Staff
CS 201
Computer Organization and Assembly Language
(1) Computer organization and assembly language programming, machine language, arithmetic and logical operations, indexing and indirect addressing, subroutines, pipelining, memory hierarchy, input/output devices, buses, control units, secondary storage techniques.
Prereq : CS 142 or permission of the instructor;
QL;
Staff
CS 205
Algorithm Design and Analysis
(1) Advanced data structures and analysis of algorithms and their complexity. Trees, graphs, hashing, analysis of sorting algorithms, divide and conquer algorithms, dynamic programming, data structures for search and sort, development of complex abstract data types typically with an object-oriented approach.
Prereq : CS 142 and MATH 175, or permission of the instructor;
QL;
D.Bunde;
CS 206
Foundations of Computing
(1) Automata theory (finite machines, regular expressions, context-free languages, an introduction to lexical analyzers and parsers, etc.); computability theory (decidable and undecidable languages, problems that are solvable and not solvable by computers); and complexity theory (time and space complexity of algorithms, NP-completeness, PSPACE-completeness, intractability).
Prereq : CS 205 or permission of the instructor;
QL;
Staff
CS 208
Programming Language Concepts
(1) A critical study of the design issues that underlie modern programming languages. The course includes the study of lexical, syntactic, and semantic analysis and examines the important programming paradigms, including imperative, functional, logic, and object-oriented.
Prereq : CS 205 or permission of the instructor;
Staff
CS 226
Operating Systems and Networking
(1) Covers the fundamentals of operating systems and the basics of networking and communications. Topics include process and memory management, concurrency, process synchronization and scheduling, network architectures, simple network protocols, and APIs for network operations. This course also introduces the C programming language, which is widely used in the implementation of operating systems and networking applications.
Prereq : CS 142;
QL;
Staff
CS 248
Teaching Assistant
(1/2 or 1)
Prereq : Permission of instructor;
May be graded S/U at instructor's discretion;
Staff
CS 262
Information Management
(1) Uses the idea of information as a unifying theme to investigate a range of issues in database systems, artificial intelligence, and data communications. Topics covered include information models and systems, database systems, relational databases, knowledge representation and reasoning, intellectual property, and privacy and civil liberties.
Prereq : CS 142;
QL;
J.Spacco;
CS 292
Software Development and Professional Practice
(1) Covers topics in software development essential to the design and development of larger software projects. Topics include requirements management, design, code construction, testing, concurrency, parallel programming and project management. Students typically work in teams on a medium-sized software project. Issues of social responsibility, intellectual property, copyright, and assessing the risks in computer systems are discussed.
Prereq : Any 200-level Computer Science course.;
O; W; QL;
J.Dooley;
CS 295
Special Topics
(1/2) Courses offered occasionally to students in special areas of Computer Science not covered in the usual curriculum. Staff
CS 303
Computer Graphics
(1) Mathematical theories, algorithms, software systems, and hardware devices for computer graphics. Translation, rotation, scaling, projection, clipping, segmented display files, hidden line and surface elimination, surface texturing, 2-D and 3-D graphics, and input of graphical data.
Prereq : CS 262;
QL;
J.Dooley;
CS 305
Operating Systems
(1) Advanced management of computer resources such as storage, processors, peripheral devices, and file systems. Storage allocation, virtual memory, scheduling algorithms, synchronization, mutual exclusion, deadlock, concurrent programming, processes, inter-process communication, protection, operating system organization.
Prereq : CS 226 and CS 201;
QL;
D.Bunde;
CS 306
Automata Theory and Programming Languages
(1) Automata theory (finite machines, Turing machines, regular expressions, context-free languages); computability theory (decidable and undecidable languages, problems that are solvable and not solvable by computers); complexity theory (time and space complexity of algorithms, NP-completeness, intractability); a critical study of the design issues that underlie modern programming languages including the study of lexical and syntactic analysis and the important programming paradigms.
Prereq : CS 142 and MATH 175;
QL;
D.Bunde;
CS 308
Networks and Distributed Systems
(1) Covers advanced topics in computer/data networking. Topics include media types, network architectures, common networking practices and components, network design fundamentals, network management technologies and practices, and an introduction to various service and maintenance protocols (IP, DNS, DHCP, WINS, etc.).
Prereq : CS 226;
QL;
Staff
CS 309
Parallel Programming
(1) Advanced study of principles and techniques for parallel programming. Topics include load balance, dependencies, overhead, scaling, synchronization, and heterogeneity. Students will express parallelism using a variety of libraries and languages, learning approaches that provide different combinations of abstraction and programmer control in both shared and distributed memory environments.
Prereq : CS 226 or permission of the instructor;
D.Bunde;
CS 310
Compilers and Interpreters
(1) Theory and practice of computer programming language translation. Lexical analysis, syntax analysis, finite state automata, parsing methods, error handling, error recovery, compiler organization, interpretation, intermediate languages, code generation and optimization techniques.
Prereq : CS 201 and CS 306;
QL;
Staff
CS 317
Artificial Intelligence
(1) A survey of topics in the branch of computer science concerned with creating and understanding "intelligent" computer systems, including advanced search techniques and heuristics, knowledge representation, expert systems, natural language processing, machine learning, and game playing. Topics will also include the study of the nature of intelligence and the representation of intelligent machines in fiction.
Prereq : CS 262 or permission of the instructor;
QL;
J.Spacco;
CS 320
Database Systems
(1) Theory and management of database management systems, including database models, design principles, file organizations, data structures and query organization for efficient access, query languages, database-interface applications, normalization and relational concepts such as views, procedural database programming and referential integrity.
Prereq : CS 262;
QL;
J.Spacco;
CS 322
Software Engineering
(1) Building large-scale computing systems uses requirements analysis, project planning, extensive documentation, cooperative teamwork, and design techniques to decompose a system into independent units. The course covers all the phases of large-scale system development. Different development models are examined including the waterfall model, the spiral mode, rapid prototyping, and extreme programming. Students typically work together in teams to build a term-long project, gaining practical experience with developing larger systems.
Prereq : CS 292;
O; W; QL;
J.Dooley;
CS 330
Cryptography and Computer Security
(1) With the increasing ubiquity of computers and computer networks, issues of privacy and security are becoming increasingly important for computing professionals. This course introduces students to a number of related areas in computer security. Topics covered include classical cryptography, public-key cryptography, block and stream ciphers, file system security, network security, Internet and web-based security, and design principles behind cryptographic systems. In addition, the course examines social, political, legal, and ethical issues related to security systems.
Prereq : CS 226 and MATH 175;
O; QL;
J.Dooley;
CS 340
Human-Computer Interaction
(1) As computing becomes more pervasive, there is a growing need to understand the point where humans and machines connect. This course is a survey of topics that arise from examination of this connection. Topics include user interface design, usability analysis, scientific visualization, novel interfaces, and an exploration of what happens when it all goes terribly wrong.
Prereq : CS 262;
O; QL;
J.Spacco;
CS 348
Teaching Assistant
(1/2 or 1)
Prereq : Permission of instructor;
May be graded S/U at instructor's discretion;
Staff
CS 360
Natural Language Processing
(1) Getting computers to process human language intelligently was one of the earliest goals in computer science, and the task continues today. This course gives a survey of the area, including both 'pure' topics like morphological analysis and parsing, and applications, such as machine translation, question answering, and dialogue systems. There is a strong emphasis on statistical methods.
Prereq : CS 262;
O; QL;
Staff
CS 395
Special Topics
(1/2 or 1) Courses offered occasionally to students in special areas of Computer Science not covered in the usual curriculum. Staff
CS 399
Research Seminar in Computer Science
(1) An advanced study of a special topic in computer science not substantially covered in the regular curriculum. Resources are usually drawn from the current computing literature. Emphasis is on student presentations and independent writing and research. Students submit a major paper and give a public lecture.
Prereq : senior standing;
Staff
CS 400
Advanced Studies
(1/2 or 1) See College Honors Program. Staff
I see logic in the art, as well as in the world of capital market -- the visual logic and the logic of the markets' fundamentals. I am Janny
Thipphongpraphas '01, Senior Financial Analyst, and...