Course Catalog 2009-2010
Associate Professor Matthew Neal, Chair
Professors Todd H. Feil, Joan Krone; Associate Professors Thomas C. Bressoud, Jessen T. Havill, R. Matthew Kretchmar; Academic Administrative Assistant 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 a variety of fields. 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, algorithm analysis and the theory of computation, software engineering, and computer game design. Students have opportunities to conduct research through the Anderson summer research program and/or a senior research project.
Students interested in a Computer Science major should take either CS 110 or CS 111 followed by CS 173 and CS 174 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 110 or 111, 173, 174, 271, 275, 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 334, CS 372, 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 year-long senior research project may count as one elective toward the major.
A minor in computer science consists of CS 110 or 111, 173, 174, 271, 281, and Math 123. 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 the Denison University Research Foundation (DURF) support qualified students conducting summer research. For off-campus research opportunities in Computer Science, see the Oak Ridge Science Semester described at www.orss.denison.edu.
Foundations of Computing Through Digital Media (CS-110). This course is an introduction to computational problem solving. Students will develop their abilities to abstract otherwise complex problems and generate elegant and efficient solutions. Students will practice these skills by developing computer programs that manipulate digital images and sounds. These skills will prove applicable not only in subsequent computer science courses but in numerous other fields. Absolutely no prior experience is necessary. 4
Foundations of Computing for Scientific Discovery (CS-111). This course is an introduction to computational problem solving. Students will develop their abilities to abstract (or model) otherwise complex problems and generate elegant and efficient solutions. Students will practice these skills by developing computer programs that solve problems motivated by research in the sciences. Additional topics may include modeling and simulation, Monte Carlo methods, numerical approximation, data analysis, data storage, cryptography and cryptanalysis, digital image processing, data mining, and fractals. Absolutely no prior experience is necessary. 4
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. 1
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 110 or 111. Co requisite: CS 174. 4
Discrete Mathematics for Computer Science (CS-174). This course covers mathematical topics necessary for understanding concepts in computer sciences. Topics include proofs, sets, relations, functions, number theory, induction, solving recurrences, probability, elementary counting techniques and matrices. Prerequisite: CS 110 or 111. 4
Introductory Topics in Computer Science (CS-199). A general category used only in the evaluation of transfer credit. 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. 1
Technical Communication I (CS-215). This course aims to enhance mathematics and computer science students' proficiency and comfort in orally communicating content in their disciplines. Students will present three talks during the semester on substantive, well-researched themes appropriate to their status in their major. Prerequisite: Math 210 or CS 271. 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. Prerequistes: CS 173 and 174. 4
Elementary Graph Theory (CS-275). Graphs are mathematical structures that are used to model a great variety of phenomena ranging from the internet to social networks to phylogenetic clusters. In this class, we will study the mathematical properties of graphs and develop algorithms to solve many common graph problems. Prerequisite: CS 174 or Math 210. 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. 4
Intermediate Topics in Computer Science (CS-299). A general category used only in the evaluation of transfer credit. 1-4
Technical Communication II (CS-315). This course is a capstone experience in oral and written communication for mathematics and computer science majors. Students will research a substantive topic, write a rigorous expository article, and make a presentation to the department. Prerequisite: Math/CS 215. Corequisite: a 300-400 level mathematics or computer science course. 1
Theory of Computation (CS-334). This course is a study of formal languages and their related automata. Turing machines, unsolvable problems and NP-complete problems. Prerequisites: CS 174, 271, and 275. 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. 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. 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. 4
Independent Study (CS-363). 1-4
Independent Study (CS-364). 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, 271, 275, and junior/senior status. 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. 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. 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. 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. 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. 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. 4
Advanced Topics in Computer Science (CS-399). A general category used only in the evaluation of transfer credit. 1-4
Advanced Topics in Computer Science (CS-401). 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. 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. 4