To view our page properly please enable javascript in your browser
Computer Science



CS 127 Computing, Technology, and Society (1)
Introduction to computers and an overview of computer science for students with little or no background in computer science. Topics include history and future of computing, computer hardware, information storage and retrieval, operating systems, networking and the World-Wide-Web, social and ethical implications of computing, and an introduction to structured problem-solving in a high-level programming language.MNS; Staff

CS 141 Introduction to Computer Science (1)
An introduction to the fundamental principles of computer science, with emphasis on problem solving techniques, data and procedural abstraction, and use of algorithmic thinking to understand, decompose and translate problem descriptions into sound, machine-executable solutions. Fundamentals of computer functions, data types, control structures and program design considerations, including object-oriented concepts such as modularity, encapsulation and class. MNS; Staff

CS 142 Program Design and Methodology (1)
Continued study of principles of computer science, structured programming, object- oriented programming, and algorithmic languages. Introduction to data structures, algorithms and their complexity analysis, advanced problem solving involving recursion and iteration, software engineering concepts, design principles and implementation. MNS; Prereq : CS 141 or permission of the instructor; Staff

CS 160 Programming Practice (1/2)
Individual instructio 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. May be repeated once for credit. Prereq : CS 141; Staff

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; 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; 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. MNS; Prereq : CS 142 and MATH 175, or permission of the instructor; 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; 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. Prereq : CS 142; Staff

CS 242 Digital Electronics (1)
Theory and practice of the implementation of digital logic circuits from small scale integrated devices to microprocessors. Three class meetings and one double-period laboratory a week. Prereq : PHYS 130 or PHYS 130A; Staff

CS 248 Teaching Assistant (1/2 or 1)
Prereq : Permission of instructor; Staff

CS 250 Independent Study (1/2 or 1)
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; D.Blaheta;

CS 292 Software Development and Professional Practice (1)
Covers elementary topics in software engineering essential to the design and development of larger software projects. Topics include requirements management, design, software evolution, testing, 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.; 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, point plotting display, raster display, random stroke display, input of graphical data. Prereq : CS 205 and MATH 152 (or equivalent); Staff

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; Staff

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; 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; Staff

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; 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; D.Blaheta;

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; Staff

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; 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; 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; Staff

CS 348 Teaching Assistant (1/2 or 1)
Prereq : Permission of instructor; Staff

CS 350 Independent Study (1/2 or 1)
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 the recent shift toward statistical methods. Prereq : CS 262; D.Blaheta;

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