Students are often interested in computer science as its own discipline, for example either because it offers opportunities to change both science and society or because it provides a rich domain of problems, activities, and research that is both theoretical and practical.
Some students are interested in computer science as part of building a foundation for interdisciplinary work. Students at Duke often major in more than one subject, or get one of many certificates, or earn minors in more than one area. Combining computer sciene with another field such as economics, mathematics, arts and visual studies, public policy, biology or even English often makes sense for students whose interest cross traditional disciplinary boundaries.
Programming Courses, Introduction to Computer Science
Students who contemplate taking more than one course in computer science should start with Compsci 6 if they have no or little previous experience with programming. Starting in the fall of 2010 Compsci 6 will start from the very beginning, with no experience in programming assumed for students entering the course. The course will use interdisciplinary problems as well as core computer science topics to engage students in learning about programming, problem-solving and analysis.
Students with an extensive programming background, e.g., through an AP course or learned on their own, may be able to place out of Compsci 6 and into Compsci 100. Students with AP credit (4 or 5 on the A or AB exam) are given credit for Compsci 6. Other students may be placed out of Compsci 6 after discussing their background with Professor Owen Astrachan, Director of Undergraduate Studies.
Although it is rare, a few students place out of Compsci 100. This requires extensive discussion with the Director of Undergraduate Studies.
Students Exploring Computer Science
Some students are interested in computer science, but may not intend to continue in it, or want to explore an area of the field that does not lead directly to continued study. Students may want to take Compsci 6 as their only computer science course. Other students may want a simpler programming experience where examples are situated in one area of interest. Such students should consider Compsci 4 which is taught in different versions: one that uses computational genomics to explore the field and one that uses a programming environment for developing stories, games, and virtual worlds.
Compsci 82 is a non-programming introduction to technology and policy. This course explores the technical and social foundations of the Internet from technical, legal, social, and ethical viewpoints.
Programming and Problem Solving. QS.
Programming and problem solving in a specific domain such as robotics, virtual worlds, web programming, biology, genomics, or computer science. Students learn the basics of programming by studying problems in one application area. Instructor: Astrachan, Duvall, Forbes, or Rodger. One course.
Introduction to Computer Science. QS.
Introduction practices and principles of computer science and programming and their impact on and potential to change the world. Algorithmic, problem-solving, and programming techniques in domains such as art, data visualization, mathematics, natural and social sciences. Programming using high-level languages and design techniques emphasizing abstraction, encapsulation, and problem decomposition. Design, implementation, testing, and analysis of algorithms and programs. No previous programming experience required. Instructor: Astrachan, Duvall, Forbes, or Rodger. One course.
Introduction to Problem Solving. QS.
Techniques for solving computational problems in groups and individually. Topics vary every semester the course is offered. Course may be repeated once. Consent of instructor required. Co-requisite: Enrollment in Computer Science 4 or Computer Science 6. Instructor: Rodger. Half course.
Technical and Social Analysis of Information and the Internet. EI, QS, STS.
The development of technical and social standards governing the Internet and Information Technology in General. The role of software as it relates to law, patents, intellectual property, and IETF (Internet Engineering Task Force) standards. Analysis of issues from a technical perspective with an emphasis on the role of software and the relationship of standards to social and ethical issues. Not open to students who have taken Computer Science 82s or 182s. Instructor: Astrachan, Forbes. One course. C-L: Information Science and Information Studies 101.
Data Structures and Algorithms. QS.
Analysis, use, and design of data structures and algorithms using an object-oriented language like Java to solve computational problems. Emphasis on abstraction including interfaces and abstract data types for lists, trees, sets, tables/maps, and graphs. Implementation and evaluation of programming techniques including recursion. Intuitive and rigorous analysis of algorithms. Prerequisite: Compsci 6 or Engineering 53, or equivalent.. Instructor: Astrachan, Duvall, or staff. One course. C-L: Information Science and Information Studies.