Course Catalog 2007-2008
Associate Professor Jessen T. Havill, Chair
Professors Todd H. Feil, Joan Krone; Associate Professors Thomas C. Bressoud, Jessen T. Havill, R. Matthew Kretchmar; Assistant Professor Thomas Wexler; Academic Secretary Dee Ghiloni
Computer Science is the study of algorithmic problem solving in both theoretical and applied areas. The major in Computer Science is designed to enable students to become well rounded in these areas, and well prepared for either graduate study or work in industry. Emphasis is placed on core concepts, analytical thinking, and problem solving throughout the curriculum.
In addition to a broad complement of introductory courses, the department regularly offers advanced courses in artificial intelligence and robotics, computer systems and networking, software engineering, and computer graphics. Students have opportunities to conduct research through either the Anderson summer research program and/or a senior research project.
Students interested in a Computer Science major should take CS 171 followed by CS 173 and either CS174 or 175 by the end of the first year. In rare circumstances, a student may complete this sequence during the sophomore year. Majors should also take Math 123 during the first year.
The core courses in Computer Science are CS 171, 173, 174, 175, 271, 281, 371, and Math 123. Math 210 may substitute for CS 174. All Computer Science majors must complete these courses.
Bachelor of Arts Degree. The minimum requirements for a B.A. degree in Computer Science are the core plus two additional Computer Science courses at the 300 or 400 level, excluding 361-362 and 363-364.
It is also recommended that a B.A. candidate in Computer Science consider a second major or a strong minor.
Bachelor of Science Degree. The minimum requirements for a B.S. degree are the core, CS 372, CS 334, and three additional Computer Science courses at the 300 or 400 level, excluding 361-362 and 363-364. Students may substitute Math 242 for one of these additional courses. We strongly recommend that B.S. candidates also take one or more of Math 124, 210, 231 and 242.
A minor in computer science consists of CS 171, 173, 174, 271, 281, and Math 123. CS 175 or Math 210 may substitute for CS 174.
Students who intend to continue with graduate study in Computer Science should pursue the B.S. degree.
The Anderson Foundation and DURF support qualified students to carry out summer research. For off-campus research opportunities in Computer Science, see the Oak Ridge Science Semester described at www.orss.denison.edu.
Seminar: Programming Problems (CS-119). Students meet weekly to solve a challenging programming problem. Strategies for solving problems will be discussed. Used as a preparation for programming contests. Prerequisite: CS 173. Offered fall semester. Staff. 1
Introduction to Computer Science (CS-171). A one-semester introduction to computer science, with an emphasis on designing algorithms and implementing those algorithms using a computer programming language (currently Java). Students will also learn some elementary concepts from the field of computer science. Students will apply these concepts and skills to various modern multimedia projects. For example, students might create digital image filters, splice and reverse digital sounds, create visualizations of sounds, and implement digital video special effects. Staff. 4
Intermediate Computer Science (CS-173). A study of intermediate level computer science principles and programming techniques with an emphasis on abstract data types and software engineering. Topics include recursion, sorting, dynamic memory allocation, basic data structures, software engineering principles, and modularization. Prerequisite: CS 171. Co requisite: CS 174 or 175. Staff. 4
Discrete Mathematics for Computer Science (CS-174). This course covers mathematical topics necessary for understanding concepts in computer science. Topics include proofs, sets, relations, functions, number theory, induction, solving recurrences, probability, elementary counting techniques and matrices. Prerequisite: CS 171. Staff. 4
Elementary Graph Theory (CS-175). Graphs are widely used in computer science for modeling data networks, usage patterns in cache memory, precedence relationships between processes, circuit design, and finite state machines, among other things. In this class, we will study the mathematical properties of graphs and we will design and implement algorithms to solve many common graph problems. Prerequisite: CS 171. Staff. 4
Introductory Topics in Computer Science (CS-199). A general category used only in the evaluation of transfer credit. Staff. 1-4
Topics in Computer Science (CS-200). Occasionally, the department offers this "mini course" devoted to a particular application or programming language. Past offerings have included scripting languages, Mac OS X programming, and LaTeX. Staff. 1
Data Structures (CS-271). In this course, students study a variety of data organization methods, and implement and analyze the efficiency of basic algorithms that use these data structures. Course topics include lists, stacks, queues, binary search trees, heaps, priority queues, hash tables, and balanced trees. Students will also be introduced to basic functional programming in LISP. This course includes a weekly two-hour session during which students present talks and learn mathematical typesetting and symbolic computation packages. Prerequisites: CS 173 and either CS 174 or CS 175. Staff. 4
Computer Organization (CS-281). A study of computer organization and the interface between hardware and software. Topics include assembly language programming, machine language, binary number representation and computer arithmetic, the central processing unit, input and output, the memory hierarchy, and digital design using modern simulation software. Prerequisite: CS 271 or CS 173 and consent of instructor. Staff. 4
Intermediate Topics in Computer Science (CS-299). A general category used only in the evaluation of transfer credit. Staff. 1-4
Theory of Computation (CS-334). (Also listed under Mathematics offerings.) This course is a study of formal languages and their related automata. Turing machines, unsolvable problems and NP-complete problems. Prerequisite: CS 271. Staff. 4
Operations Research (CS-337). This course involves mathematical modeling of real-world problems and the development of approaches to find optimal (or nearly optimal) solutions to these problems. Topics include: Modeling, Linear Programming and the Simplex Method, the Karush-Kuhn Tucker conditions for optimality, Duality, Network Optimization, and Nonlinear Programming. Prerequisite: Math 231. (Not offered 2007-2008) Staff. 4
Artificial Intelligence (CS-339). A survey course of topics in Artificial Intelligence including search, formal systems, learning, connectionism, evolutionary computation and computability. A major emphasis is given to the philosophy of Artificial Intelligence. Prerequisite: CS 271 and 281. Staff. 4
Software Engineering (CS-349). Students will apply their theoretic background, together with current research ideas to solve real problems. They will study principles of requirements analysis, methods of designing solutions to problems, and testing techniques, with special emphasis on documentation. Prerequisite: CS 271 and 281. Staff. 4
Directed Study (CS-361). Staff. 1-4
Directed Study (CS-362). Staff. 1-4
Independent Study (CS-363). Staff. 1-4
Independent Study (CS-364). Staff. 1-4
Algorithm Design and Analysis (CS-371). In this course, students study in depth the design, analysis, and implementation of efficient algorithms to solve a variety of fundamental problems. The limits of tractable computation and techniques that can be used to deal with intractability are also covered. Prerequisites: CS 174, CS 175, CS 271, and junior/senior status. Staff. 4
Operating Systems (CS-372). A study of the principles of operating systems and the conceptual view of an operating system as a collection of concurrent processes. Topics include process synchronization and scheduling, resource management, memory management and virtual memory, and file systems. Prerequisites: CS 271 and 281. Staff. 4
Programming Languages (CS-373). A systematic examination of programming language features independent of a particular language. Topics include syntax, semantics, typing, scope, parameter modes, blocking, encapsulation, translation issues, control, inheritance, language design. A variety of languages from different classes are introduced. Prerequisites: CS 271 and 281. Staff. 4
Compilers (CS-374). A study of regular and context-free languages with the purpose of developing theory to build scanners and parsers. The class will develop its own structured language and construct a working compiler. An examination of compiler construction tools. Prerequisites: CS 271, 281, and 334. Staff. 4
Computer Networks (CS-375). A study of computer network architecture and protocols. Topics include packet and circuit switching, datalink, network and transport layer protocols, reliability, routing, internetworking, and congestion control. Prerequisites: CS 271 and 281. Staff. 4
Database Systems (CS-377). A study of the design, implementation and application of database management systems. Topics include the relational data model, physical implementation issues, database design and normalization, query processing and concurrency. Prerequisites: CS 271 and 281. Staff. 4
Robotics (CS-391). An introductory course in both hardware and software aspects of robotics. Students will learn the basics of manipulators, sensors, locomotion, and micro-controllers. Students will also construct a small mobile robot and then program the robot to perform various tasks. Prerequisites: CS 271 and 281. Staff. 4
Advanced Topics in Computer Science (CS-399). A general category used only in the evaluation of transfer credit. Staff. 1-4
Advanced Topics in Computer Science (CS-402). Topics may include High Performance Computing, Graphics, Neural Networks, Advanced Algorithms, Network security or other subjects of current interest. Staff. 4
Advanced Topics in Computer Science (CS-403). Topics may include High Performance Computing, Graphics, Neural Networks, Advanced Algorithms, Network security or other subjects of current interest. Staff. 4
Senior Research (CS-451). Staff. 4
Senior Research (CS-452). Staff. 4
Honors Project (CS-461). Individual work for Honors. Staff. 4
Honors Project (CS-462). Individual work for Honors. Staff. 4