Computer Science
(Program Homepage)
Faculty: D. Berque, D. Harms, B. Howard, A. Olowoyeye, K. Stewart, S. Thede, G. Townsend
The most important aspect of Computer Science is problem solving, an essential skill for life. Students study algorithmic processes and the design, development and analysis of software and hardware used to carry out these processes. Since computers are used for a variety of purposes by people in all walks of life, there is a significant human side to computer science as well.
Some graduates choose to continue their studies in graduate or professional school (not necessarily in computer science) before seeking employment. Majors accepting positions upon graduation typically work for companies that provide computing hardware, software or services for use in business, education, government and research.
The department regularly offers Computer Science I and other courses of a more general nature for students interested in surveying key topics in computing. Departmental programs consist of a computer science major and a computer science minor. Most courses provide hands-on computing experience.
Computing facilities include pen-based computer laboratories that are part of the University network. They provide tools for computer science, standard desktop productivity, e-mail and connectivity to the Internet. The department maintains a state-of-the-art laboratory of Linux workstations with high-end servers that provide robust file services and a full array of software development tools. The department also has a computer-based, cooperative-work laboratory and a lounge for use by its majors. University programs of interest to computer science majors include: Science Research Fellows Program, Information Technology Associates Program and Winter Term internships. Some employment and research opportunities with the department and the Computer Center are available during the year and summer. Finally, the student computer clubs (Association for Computing Machinery and ACM-Women) provide coordinated programs each year.
Requirements for a major in Computer Science
| Total courses required | Ten CSC + MATH 123 |
| Core courses | CSC 121, CSC 122, CSC 231, CSC 232, CSC 233, CSC 498 |
| Other required courses | One CSC course at the 400 level in addition to CSC 498. |
| # 300 and 400 level courses | Five including CSC 498 |
| Senior requirement | The senior requirement is CSC 498. |
| Additional information | MATH 123 is also required. MATH 223 may be substituted for MATH 123 with approval of the advisor. With the approval of the advisor one of the 300 level CSC courses may be replaced by an allied course from another department. Students are encouraged to complete an internship or research experience related to the major. This is not a requirement, however, and no departmental credit is awarded for these experiences. The advisor will offer guidance on selection of courses inside and outside of the department for students who may be interested in focusing on particular areas related to computer science. |
| Recent changes in major | The major requirements on this page apply to students entering DePauw in fall 2009 or thereafter. Other students may follow these requirements or may follow the previous set of requirements. Consult with any member of the Computer Science Faculty if you have questions. |
Requirements for a minor in Computer Science
| Total courses required | Five |
| Core courses | CSC 121 and CSC 122 |
| Other courses | At least two of the courses from: CSC 231, CSC 232, CSC 233. At least one CSC course at the 300 or 400 level. |
| # 300 and 400 level courses | One |
| Recent changes in minor | The minor requirements on this page apply to students entering DePauw in fall 2009 or thereafter. Other students may follow the previous set of requirements. Consult with any member of the Computer Science Faculty if you have questions. |
Courses in Computer Science
| CSC 121. Computer Science I | Group 1, lab | 1 course |
| This is an introductory course in which problem solving and algorithm development are studied by considering computer science topics, such as computer graphics, graphical user interfaces, modeling and simulation, artificial intelligence and information management systems. Interesting and relevant programming assignments related to these topics are written in a high-level programming language that supports objects. Additional assignments utilize writing and data analysis to reinforce central course concepts and to address related areas of computing, such as ethics, history and the meaning of intelligence. The course meets three hours in class and two hours in laboratory (3-2). Prerequisites: None. Offered each semester. Not offered pass/fail. CSC 121 was designated a Group 1 lab course effective Spring 2008. | ||
| CSC 122. Introduction to Data Structures | Group 1 | 1 course |
| This course builds on CSC 121 and includes programming topics such as sorting and searching, sets, recursion and dynamic data types. Additional concepts involve data type abstraction and implementation developed through studying structures such as lists, stacks, queues, hash tables and binary search trees. The course emphasizes object oriented implementation of these structures. Students learn tools for algorithm analysis and explore the use of standard libraries. The concept of tradeoffs (i.e., time vs. space, iteration vs. recursion, static vs. dynamic) recurs as a theme throughout the course. Prerequisite: CSC 121. Offered each semester. Not offered pass/fail. | ||
| CSC 197. First-Year Seminar | 1 course | |
| A seminar focused on a theme related to the study of computer science. Open only to first-year students. | ||
| CSC 231. Computer Systems | Group 1 | 1 course |
| This is an introduction to the study of computer hardware and its relationship to software. Topics include information representation, architecture of the central processing unit, memory organization and hierarchy, assembly language and machine level representation of programs, interactions and relationships among system components (hardware, operating systems, compilers, network environments), and the impact of architectural decisions on performance. Prerequisites: CSC 122. Offered each semester. Not offered pass/fail. Not open to students who have credit for CSC 221. | ||
| CSC 232. Software Development | Group 1 | 1 course |
| A study of fundamental software development techniques and tools for managing medium to large scale software projects, together with relevant professional and ethical issues. Topics covered include methodologies for specification, design, documentation, and testing, and tools for code management, analysis, and debugging. Students will develop skills in individual and team software development through extensive practice in reading, writing, documenting, presenting, and critiquing programs. Prerequisites: CSC 122. Offered each semester. Not offered pass/fail. | ||
| CSC 233. Foundations of Computation | Group 1 | 1 course |
| This course explores the theoretical foundations of computation at various levels of abstraction. Specific topics include graph theory and related algorithms; functional programming with an emphasis on recursion and recurrences; the description of languages using formalisms such as regular expressions, finite state machines, and context free grammars; and digital logic and its application to sequential and combinational circuits. Prerequisite: CSC 122 and Math123. Offered each semester. Not offered pass/fail.> | ||
| CSC 296. Computer Science Topics | 1/2-1 course | |
| Topics are chosen from computer science to allow the study of computer science topics for non-computer science majors. Does not count in the computer science major GPA. | ||
| CSC 320. Human Computer Interaction | Group 1 | 1 course |
| This course examines fundamental principles in Human Computer Interaction as seen from the viewpoint of a computer scientist. Topics include user-centered design, expert reviews, usability tests, tradeoffs between interaction devices, alternative input-output methods, including handwriting recognition and associated algorithms, the design of interfaces for users with visual or motor impairments, construction of appropriate error messages and implementation of graphical user interfaces (GUIs). Prerequisite: CSC 232 (previously CSC 221 or 222). Typically offered annually. Not offered pass/fail. | ||
| CSC 322. Computer Networking (formerly CSC 422) | Group 1 | 1 course |
| This course examines the core concepts and fundamental principles of computer networks and the services built on top of them. Topics covered include protocol organization, circuit-switch and packet-switch networks, routing, flow control, congestion control, reliability, security, quality-of-service and Internet protocols (TCP/IP). Prerequisites: CSC231 (previously CSC 221 and CSC 222). Typically offered annually. May not be taken pass/fail. | ||
| CSC 330. Artificial Intelligence | Group 1 | 1 course |
| This course examines the implementation of intelligent algorithms on a computer system. The concept of an intelligent algorithm is motivated by initial discussions of the nature of intelligence and its relation to computers, particularly the Turing test. The course begins with two basic topics of artificial intelligence. The first is problem definition, state spaces and search methods, and the second is knowledge representation and logical reasoning. Following these topics is coverage of more advanced topics, such as game-playing algorithms, genetic algorithms, planning algorithms, computer vision, learning algorithms and natural language processing, among others. Prerequisite: CSC 233 (previously CSC 222). Recommended prerequisite: CSC 232 (previously CSC 222). Typically offered annually. Not offered pass/fail. | ||
| CSC 340. Web Programming and Cybersecurity | Group 1 | 1 course |
| This course covers some fundamental networking concepts, web application development and web application security. Topics covered include: introduction to the Internet, World Wide Web and internet protocols, markup languages, client side scripting, server side scripting, database concepts, encryption/decryption, web application vulnerabilities and how to build secure web applications. Prerequisites: CSC 231 (formerly CSC 221) or CSC 233. Typically offered bi-annually. Not offered pass/fail. | ||
| CSC 350. Graphics | Group 1 | 1 course |
| This course is an introduction to the concepts, techniques, algorithms and implementation of computer graphics. Topics include moving and drawing lines in absolute and relative coordinates, transformations, windowing, clipping, projections, perspective, polygon filling, hidden surface techniques and a variety of applications, including graphical user interfaces and menuing systems. Prerequisite: CSC 232 (previously CSC 222). Recommended prerequisite or co-requisite MATH 151. Typically offered annually. Not offered pass/fail. | ||
| CSC 396. Computer Science Topics | 1/2-1 course | |
| Topics are chosen from computer science content areas that extend explorations of content in existing courses or allow exploration of content not duplicated in regular course offerings. Open to students by permission of instructor or to those who satisfy prerequisites determined by the instructor. | ||
| CSC 424. Programming Languages | Group 1 | 1 course |
| The topics of this course include a history of programming languages, virtual machines, representation of data types, sequence control, data control, lexical vs. dynamic scoping, sharing, type checking, parameter passing mechanisms, run-time storage management, context-free grammars, language translation systems, semantics and programming paradigms. Prerequisite: CSC 231 and CSC 232 (previously CSC 221 and CSC 222). Typically offered annually. Not offered pass/fail. | ||
| CSC 426. Compilers | Group 1 | 1 course |
| This course offers the study of theories related to compilers with the goal of implementing a compiler for a simplified variation of a language such as C++. Topics include formal languages, grammars, lexical, syntactic and semantic analysis, code generation and optimization. Prerequisites: CSC 231, CSC 232, and CSC 233 (previously CSC 221 and CSC 222). Typically offered annually. | ||
| CSC 428. Operating Systems | Group 1 | 1 course |
| Topics in operating system concepts and design, such as file systems, CPU scheduling, memory management, virtual memory, disk scheduling, deadlocks, concurrent processes, protection and distributed systems are studied in this course. Topics are treated thoroughly in a generic way and also discussed in detail with respect to a specific operating system. Prerequisites: CSC 231, CSC 232, and CSC 233 (formerly CSC 221 and CSC 222). Typically offered annually. Not offered pass/fail. | ||
| CSC 440. Theory of Computation (formerly CSC 341) | Group 1 | 1 course |
| Various models of formal languages (which provide a basis for compilers) and computation (which defines the kinds of problems that can be solved by a computer) are studied. Topics include regular languages, regular expressions, finite state automata, context-free languages, context-free grammars, push-down automata and Turing machines. The application of these models to several practical problems in computer science is considered. Computational limits are also discussed, using as examples several problems which cannot be solved by any algorithm. Prerequisite: CSC233 (previously CSC122 and MATH223). Typically offered annually. Not offered pass/fail. | ||
| CSC 480. Database and File Systems (formerly CSC 381) | Group 1 | 1 course |
| This course provides an external and an internal view of relational database management systems (DBMSs). The external view consists of database design and implementation. The database query and manipulation languages SQL and QBE will be studied to the degree that students will be able to become proficient in these languages on their own. The internal view involves characteristics of secondary storage devices, methods of organizing information, various file organization and accessing techniques and other topics related to database engine implementation. Programming assignments complement topics discussed in class, including the building of a few key components of a database engine. Prerequisite: CSC 231 and CSC 232 and CSC 233 (previously CSC 222). Typically offered annually. Not offered pass/fail. | ||
| CSC 496. Computer Science Topics | 1/2-1 course | |
| Topics are chosen from content areas of computer science that either extend explorations of content in existing courses or allow explorations of content not duplicated in our current course offerings. Open by permission of instructor to students with more advanced prerequisites chosen by the instructor. | ||
| CSC 498. Senior Project | 1 course | |
| Students complete a project proposal and a project under the sponsorship of a member of the computer science faculty. Students will examine ethical issues related to their projects. Periodic progress reports will also be given. Prerequisite: CSC 231 and CSC 232 and CSC 233 and senior standing and at least one computer science course at the 300 or 400 level (formerly senior standing and at least one 300 or 400 level computer science course). Offered each semester. Not offered pass/fail. | ||
