|
Table of Contents Academic Life Academic Regulations The Academic Programs International and Off-Campus Studies Special Programs Admissions and Financial Aid Life Outside the Classroom People Facts and Figures College Calendar |
Computer Science http://www.stolaf.edu/depts/cs/ Director, 2000-01: Richard A. Brown, Mathematics, computer science, distributed systems Faculty, 2000-01: Steven McKelvey, Mathematics, operations research, wildlife modeling; Richard J. Allen, Mathematics, logic programming, intelligent tutoring systems; Matthew Richey, Mathematics, computational mathematics, software engineering The Computer Science Concentration at St. Olaf is a six-course program that may be earned in conjunction with any academic major. By means of an individualized contract system, the concentration conforms to individual interests and maintains flexibility to evolve along with the world of computing, while focusing on enduring fundamental principles that apply to all computing systems. Each course emphasizes principles of computer science, always reinforcing concepts with applied programming exercises. Students practice and develop written and oral communication skills. Forward-looking computing technology is explored throughout the concentration curriculum. Internships and other connections with industry forge links between the academic program and contemporary practical applications of computer science.The complete concentration satisfies basic entry requirements for most graduate programs in computer science. However, the St. Olaf Computer Science Concentration focuses on bringing a liberal-arts understanding of computer science principles -- reinforced by up-to-date applied experiences -- to students in all disciplines, whatever careers they pursue in a world of ever-advancing computing technology. General Education Credit Computer science courses that fulfill general education requirements are listed in the Class and Lab Schedule. Prerequisites Prerequisites for computer science courses are found in the course descriptions. REQUIREMENTS FOR THE CONCENTRATION A Computer Science Concentration is arranged by an individual contract between a student and the Computer Science faculty. This provides some latitude for choice according to personal preference. For example: Art majors might include independent projects in computer graphics as part of their concentrations, or a Psychology major might participate in a research project in cognitive science, artificial intelligence, or human-computer interaction. Computer science courses taken as part of a semester in Budapest, Hungary, are frequently included in contracts; and internships in industry are strongly encouraged for all concentrators. The contract system also allows the Computer Science faculty to update the curriculum easily as the field of computer science evolves, without affecting students who have already declared concentrations. A concentration in Computer Science normally includes Computer Science 172, 272, 274, 372, 376, and an approved sixth course. The sixth course may be the seminar Computer Science 378, or a project or off-campus experience such as those above other than an internship. Except for Computer Science 378, the choice of the additional course must be approved as such in advance by the director of the Computer Science concentration. Contracts that differ from this pattern will be considered on a case-by-case basis. Special Resources St. Olaf was among the first of four-year colleges to use the UNIX operating system (1975) and to join the Internet network (1988). This tradition of exploring new computing technologies firsthand continues today. For example, St. Olaf was among the first liberal-arts colleges to vigorously pursue the World Wide Web networked information server. Computer science courses are supported by a dedicated network of Sun UNIX workstations and PCs with Linux and Windows, equipped with high-performance color graphics, all fully connected to the Internet network. Some courses and projects have access to specialized equipment in various departments across the campus. COURSES 172 Principles of Computer Science Fundamental concepts of computer science, introduced using an interactive programming environment (Scheme dialect of LISP language). Organized around three approaches to programming: functional, imperative, and object-oriented programming. Problem-solving and algorithm development, programming style and documentation, recursion, iteration and loop invariants, elementary algorithm analysis, object-oriented programming, applications. No prerequisites. 272 Software Design and Implementation Object-oriented programming, software design and development of software applications in a compiled imperative object-oriented programming language (C++). Mastery of programming fundamentals, memory management, and sound software design concepts, including modularization, encapsulation, incremental software development, specification, documentation, and the software lifecycle; introductory implementation of linked lists; capstone team project. Prerequisite: Computer Science 172. An introduction to the low-level operation of computers for students having high-level programming experience. Introduction to digital logic, machine organization, operating system interface, low-level structure of software systems, comparison of computer architectures, computer networks, current and future trends in computer design. Representative experience with assembly programming. Prerequisite: Computer Science 172 or permission of the instructor. 294 Internship Intermediate-level version of Computer Science 394. 298 Independent Study A higher-level treatment of structuring concepts for data and algorithms, presented in an object-oriented software design context (languages C++ and Java). Stacks, queues, lists, trees, graphs, and hash tables, including (for example) binary trees, AVL trees, heaps, etc.; standard searching and sorting algorithms, with performance analysis; additional topics such as data compression. Concepts applied in a series of team programming projects. Prerequisite: Computer Science 272 or permission of the instructor. Design and implementation principles of high-level programming languages. Syntax, semantics and common language features explored and implemented in an ongoing individual project of building a language interpreter that incorporates each feature. Prerequisites: Computer Science 272 and 274, or permission of the instructor. 378 Seminar in Computer Science Recent and planned topics include principles of operating systems, relational database systems, event-driven programming (client/server and graphic user interfaces), computer graphics, artificial intelligence, logic programming. Prerequisites: depend on topic; generally includes Computer Science 272 and other course. Experiences in computer-industry positions. Projects have included implementation of solid modeling (NURBS), documentation, business applications of computing, applications of computer graphics in medical research, team programming. Internship experiences (whether for credit or not) are strongly encouraged for anyone considering a career in computing. Recent projects have involved team software development, graphics user-interface (GUI) programming, real-time computing, logic programming and intelligent tutoring systems, relational data bases, computer networks, and operating systems. |