View descriptions of CS courses on seperate pages

Courses in Computer Science

CSI 101: Introduction to Computers

An introduction to the general concepts of computer science and electronic data processing with modern desktop computers and networked computers. Topics include hardware, software, programming, and usage of some standard applications such as word processors and spreadsheets. Some programming will be required. This course does not satisfy a major or minor requirement, nor does it satisfy the College skills requirement in reasoning.

CSI 110: Computer Science I (G)

The design, construction, and verification of computer programs using a modern programming language (currently Java). Topics include algorithm development and design techniques, control structures, and data types. Four meeting per week.

CSI 111: Computer Science II (G)

A continuation of CSI 110. Emphasis is placed on programming methodology, fundamental data structures (stacks, queues, linked lists, trees) and their implementation, searching, sorting, pointers, and recursion. Four meetings per week. Prerequisite: CSI 110.

CSI 210: Software Engineering (W)

A project-based study of the theory, practice, processes, and tools used to design, build, and maintain large software systems. Topics include requirements analysis, system architecture, design, testing, maintenance, and project management, as well as professional practice, risks, intellectual property, and social impact of computing. Prerequisite: CSI 111.

CSI 220: Data Structures and Algorithms

A study of the use and implementation of various structures for storing data. Topics include abstract data types, lists, trees, B-trees, graphs, recursion, and the analysis and measurement of algorithms. Prerequisite: CSI 111.

CSI 240: Computer Organization

An introduction to the architecture and operation of a computer system. Topics include assembly language programming, addressing methods, subroutines, microcode, assemblers and linkers. Prerequisite: CSI 110.

CSI 305: Database Systems

An introduction to databases with emphasis on the relational model. Topics covered include B+ Trees, relational database design, ER diagrams, relational algebra, structured query language (SQL), embedded queries in procedural languages, and database implementation. Prerequisite: CSI 220. Offered in alternate years.

CSI 310: Theory of Programming Languages

A study of the principles that govern the design and implementation of contemporary programming languages. Topics include lexical properties, compilers, interpreters, data structures, control structures, parameter passage, and run-time environments. Procedural, functional, object oriented, and logic programming languages will be considered. Prerequisite: CSI 220. Offered in alternate years.

CSI 320: Theory of Computation

A study of the basic theoretical principles of Computer Science. Topics include finite automata, pushdown automata, regular expressions, Turing machines, the halting problem, unsolvability, and computational complexity. Prerequisite: CSI 220 and MTH 215. Offered in alternate years.

CSI 326: Artificial Intelligence

An introduction to the topics of Artificial Intelligence; intelligent agents, search, logic, planning, learning, natural language processing, vision, robotics. Students will write programs in Lisp and Prolog. Prerequisite: CSI 220. Offered in alternate years.

CSI 340: Compiler Design

An introduction to the principles of compiler design. Topics include LL(k) and LR(k) languages, code generation, optimization, and error recovery. Prerequisites: CSI 220 and CSI 240. Offered in alternate years.

CSI 345: GUI and Web Programming

The tools and techniques used to create computer programs that have graphical user interfaces (GUIs). Emphasis is placed on applications that make use of the World Wide Web. Topics will include XHTML, Javascript, Java servlets, and CGI programming. Prerequisite: CSI 220.

CSI 350: Operating Systems

An introduction to the management of processes, memory, and I/O devices in a multiprogramming environment. Topics include file systems, resource sharing, scheduling, interrupts, and concurrency. Prerequisites: MTH 121, CSI 220 and CSI 240. Offered in alternate years.

CSI 355: Data Communications and Networks

The concepts and techniques used to implement communications using computer networks. Topics include: the ISO network model, protocols, direct link networks, packet switching, and the Internet. Prerequisites: MTH 121, CSI 220 and CSI 240. Offered in alternate years.

CSI 370: Computer Science Seminar (W)

Advanced study of selected topics in computer science. Students will also work in teams on a significant software project. Prerequisite: CSI 210, CSI 220, and CSI 240, or by permission.

CSI 551: Special Topics in Computer Science

Topics may include computability, computer graphics, software engineering, GUI programming languages, and systems programming.