Requirements and Curriculum
Note: This information reflects the requirements and curriculum printed in the 2007-08 course catalog.
Requirements
Required for a major
150, 151, 200, 220; two from 320, 440, or 450; two from 250, 360, or 477; one from 240, 330, 340, or 462. The yearlong senior project (490-491) is also required.
Required for a minor
150, 151, 200, and two additional courses above 200.
Advanced Placement Credit
Advanced placement credit is dependent on successful completion of computer science 151 or one of the other computer science courses required for the major. Computer science 150 is the lowest numbered course for which advanced placement credit will be considered.
Curriculum
125 Survey of Computer Science 4 hours
This course is intended as a broad introduction to computer science for students who wish to study a single course in computing. It also provides an overview to students who are considering further work in computer science, but do not choose to begin with CS 150. Topics included are the bit-level, with hardware and computer architecture; operating systems and computer networks; high-level languages and their compilers; databases; computer graphics; software engineering; scientific computing; artificial intelligence; algorithm analysis and complexity; social and legal issues. Students learn a high-level programming language as a major part of the course. Particular attention is paid to the Internet and the World Wide Web. Credit is not available for students who have already received credit for 150 or above. (Quant)
139, 239, 339, 439 Special Topics Credit arr.
150 Introduction to Computer Science I 4 hours
An introduction to computer science emphasizing problem solving, data abstraction, encapsulation, and the object oriented programming methodology. Topics include basic algorithmic structures (sequence, selection, and iteration), classes, abstract data types, and language-supported encapsulation techniques. (Quant)
151 Introduction to Computer Science II 4 hours
A continuation of the ideas presented in 150 with particular emphasis on data structures. Implementation of abstract data types such as stack, queue, tree, and graph as well as important algorithms. Analysis of sorting and searching algorithms. Recursion. Prerequisite: 150.
185 First-year Seminar 4 hours
A variety of seminars for first-year students offered each January term.
200 Software Design and Development 4 hours
This course builds upon the foundation of 150 and 151. It emphasizes modern programming practices and introduces students to complex ideas such as graphical user interfaces, model/view/controller architecture, threading, XML, Linux programming environments, programming tools, and program documentation. Prerequisite: 151. (W, S, R)
220 Discrete Structures 4 hours
Propositional and predicate logic, methods of proof, induction, recursion and recurrence relations, sets and combinations, binary relations (including equivalence relations and partial orderings), functions, Boolean algebra and computer logic, and finite state machines. Prerequisites: mathematics 152 or above or computer science 150, 151, or 200 or consent of instructor. (Same as mathematics 220.)
240 Database Management Systems 4 hours
Principles of database management systems and database design. Key topics include data modeling, query planning, and query writing. Database implementations include relational open-source RDBMS systems like MySQL and the XML model including Xquery and XSLT. Students will design and implement a three-tier web application featuring a database. Prerequisite: 151.
250 Programming Languages: Principles and Paradigms 4 hours
A comparison of the structure, design, and applications of various programming languages. Topics include history, language definition, formal models of syntax and semantics, data types and structures, data abstraction, control structures, data flow, and runtime considerations. Languages will be discussed in a logical organization based upon the major paradigms including imperative, logic, functional, parallel, and object oriented. Examples from classic and contemporary languages. Prerequisite: 200.
320 Computer Architecture and Systems 4 hours
An introduction to fundamental ideas of computer architecture and operating systems: digital logic, data representations, CPU, architecture, machine and assembly language, memory design, bus organization, input/output processing, interrupts. Prerequisite: 200.
330 Introduction to Computer Graphics 4 hours
An introduction to computer graphics, with an emphasis on applications programming. A commonly used application programming interface (API) is used to study geometric transformations, parallel and perspective projections, hidden surface removal, light sources, shading, and reflection. Students will write programs using the API and a high level programming-language. Offered alternate years. Prerequisites: 151, mathematics 151.
340 Artificial Intelligence 4 hours
Artificial intelligence problems and solution techniques. Problem spaces, graph and tree traversals, heuristic search. Knowledge representation methodologies, knowledge engineering, and expert systems. Philosophical and social issues. Offered alternate years. Prerequisite: 151.
360 Advanced Data Structures and Algorithms 4 hours
Balanced tree structures, including B-trees. Hashing techniques, including expandable hash files. External sorting algorithms. Memory management algorithms. File design and file processing. Emphasis on algorithm analysis and design; algorithms drawn from a variety of applications. Prerequisites: 200, mathematics/computer science 220.
380 Internship Credit arr.
On-the-job learning experience. The plan must be presented for departmental approval before the experience begins.
395 Independent Study 1, 2, or 4 hours
440 Distributed Systems 4 hours
Architectures and methods for distributed programming, including multithreaded applications and Java Remote Method Invocation (RMI). Internet application architectures from CGI to Servlets. XML-based architectures such as RSS and Web Services. Data transformation using XSL and XSLT. Prerequisites: 200. Offered alternate years.
450 Computer Networks 4 hours
Concepts, principles, protocols, and applications of computer networks with a focus on the Internet. Application layer protocols such as http, smtp. Socket programming and peer-to-peer networks. Transport-layer protocols such as TCP, UDP and congestion control. Network layer algorithms for routing and broadcast, and multicast. Link-level protocols for local area networks such as Ethernet and WiFi. Issues in network privacy and security. Prerequisite: 200.
462 Numerical Analysis 4 hours
Roots of equations and solutions of systems of linear equations, interpolation and approximation, differences and numerical integration, and numerical solutions of ordinary differential equations. Offered alternate years. Prerequisites: 150, mathematics 240. (Same as mathematics 462.)
466 Advanced Architecture and Operating Systems 4 hours
A study of operating system structures and algorithms emphasizing multiple user systems, CPU scheduling in a multi-tasking environment, concurrency and parallel computing concepts including communication and synchronization issues, storage management, and protection and security. Prerequisite: 200.
477 Theory of Computation and Compiler Construction 4 hours
Theory and practice of automata, formal languages, and computability. Chomsky hierarchy. Introduction to computational complexity. Students write a compiler for a simple programming language. Prerequisites: 200, mathematics/computer science 220.
485 Seminar Credit arr.
490 Senior Project 2 hours
Senior computer science majors participate in a substantial, year-long software development project; 490 in the fall, 491 in the spring. Students work from conceptualization and design through to implementation and delivery of a real software application. (W, S, R)
491 Senior Project 2 hours
A continuation of 490. Prerequisite: 490. (W, S, R)
493 Senior Honors Project 4 hours
A year-long independent research project. Applications are completed on the “Honors Program” form available at the registrar’s office, requiring the signatures of a faculty supervisor, the department head, the honors program director, and the registrar. Interdisciplinary projects require the signatures of two faculty supervisors. The project must be completed by the due date for senior projects. The completed project is evaluated by a review committee consisting of the faculty supervisor, another faculty member from the major department, and a faculty member from outside the major department. All projects must be presented publicly. Only projects awarded an “A-” or “A” qualify for “department honors” designation. The honors project fulfills the all-college senior project requirement. (W, S, R)