Course Offerings

Fall 2014

See complete information about these courses in the course offerings database. For more information about a specific course, including course type, schedule and location, click on its title.

Fundamentals of Programming I

CSCI 111 - Lambert (Multiple Sections)

A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.

Fundamentals of Programming II

CSCI 112 - Salan

A continuation of CSCI 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python. Laboratory course.

Software Development

CSCI 209 - Lambert

An examination of the theories and design techniques used in software development. Topics include the software life cycle, design patterns, the Unified Modeling Language, unit testing, refactoring, rapid prototyping, and program documentation.

Programming Language Design

CSCI 312 - Levy

Formal language description tools, semantic concepts and syntactic constructs appropriate to diverse applications. Comparison of several high-level languages, such as Scheme, Java, ML, and PROLOG, and their implementations of these syntactic and semantic elements. Students learn the Scheme programming language and how to use it to write interpreters for other programming paradigms (object-oriented, logic-oriented, and type-inferencing).

Seminar

CSCI 397 - Stough

Readings and conferences for a student or students on topics agreed upon with the directing staff. May be repeated for degree credit if the topics are different. A maximum of six credits may be used toward the major requirements.

Fall 2014 topics:

CSCI 397-01: Seminar: Techniques in Big Data (3). Prerequisite: Instructor consent. The term "Big Data" encompasses the acquisition, analysis, and visualization of high-dimension, high sample-size data to inform decision making -- problems with many dimensions and many samples make for "Big" problems. However, "Big" also refers to the central role of Big Data analysis in our daily lives, where it affects outcomes in medicine, security, advertising and recommendation systems, transportation, and many other domains. In this course, we learn and apply some of the field's core algorithms and techniques, with an emphasis on three application domains agreed upon at the beginning of the term. Specific technical topics may include feature selection, linear and Bayesian discriminants, principal component analysis and dimensionality reduction, clustering, neural networks, and random forest learning. Stough.

CSCI 397-02: Seminar: Robot Motion Planning (3). Prerequisite: CSCI 211 and instructor consent. Motion planning algorithms are applied on physical or virtual entities to generate low-level descriptions of motion. Such algorithms are widely used in robotics, artificial intelligence, and computer graphics. In this course, students learn to develop simulated environments containing autonomous agents such as robotic arms and mobile robots. The major focus is on implementing state-of-the-art motion planning algorithms to solve problems such as reaching a target without touching obstacles, sensing and exploring the environment, and manipulating objects. Salan

Seminar

CSCI 397 - Salan

Readings and conferences for a student or students on topics agreed upon with the directing staff. May be repeated for degree credit if the topics are different. A maximum of six credits may be used toward the major requirements.

Fall 2014 topics:

CSCI 397-01: Seminar: Techniques in Big Data (3). Prerequisite: Instructor consent. The term "Big Data" encompasses the acquisition, analysis, and visualization of high-dimension, high sample-size data to inform decision making -- problems with many dimensions and many samples make for "Big" problems. However, "Big" also refers to the central role of Big Data analysis in our daily lives, where it affects outcomes in medicine, security, advertising and recommendation systems, transportation, and many other domains. In this course, we learn and apply some of the field's core algorithms and techniques, with an emphasis on three application domains agreed upon at the beginning of the term. Specific technical topics may include feature selection, linear and Bayesian discriminants, principal component analysis and dimensionality reduction, clustering, neural networks, and random forest learning. Stough.

CSCI 397-02: Seminar: Robot Motion Planning (3). Prerequisite: CSCI 211 and instructor consent. Motion planning algorithms are applied on physical or virtual entities to generate low-level descriptions of motion. Such algorithms are widely used in robotics, artificial intelligence, and computer graphics. In this course, students learn to develop simulated environments containing autonomous agents such as robotic arms and mobile robots. The major focus is on implementing state-of-the-art motion planning algorithms to solve problems such as reaching a target without touching obstacles, sensing and exploring the environment, and manipulating objects. Salan

Directed Individual Study

CSCI 403 - Lambert

Individual conferences. May be repeated for degree credit if the topics are different.


Spring 2014

See complete information about these courses in the course offerings database. For more information about a specific course, including course type, schedule and location, click on its title.

iPhone Application Programming

CSCI 251 - Lambert

In this course, students learn how to develop programs for the iPhone / iPad / iPod Touch, the most popular smart-phone platform in use today. Classroom lectures on the Objective-C language and CocoaTouch development environment are supplemented by extensive hands-on programming assignments, leading to an independent application project of the student's devising. Williams School faculty guest lecture on the issues surrounding the iPhone App Store's novel business model. The course culminates with a presentation of each student's application, and an optional upload to the iPhone App Store to see how well the application sells.


Winter 2014

See complete information about these courses in the course offerings database. For more information about a specific course, including course type, schedule and location, click on its title.

Fundamentals of Programming I

CSCI 111 - Sprenkle

A disciplined approach to programming with Python. Emphasis is on problem-solving methods, algorithm development, and object-oriented concepts. Lectures and formal laboratories.

Fundamentals of Programming II

CSCI 112 - Salan

A continuation of CSCI 111. Emphasis is on the use and implementation of data structures, introductory algorithm analysis, and object-oriented design and programming with Python. Laboratory course.

Scientific Computing

CSCI 121 - Levy / Rowe, Salan (Multiple Sections)

An introduction to computer programming for scientific applications and a survey of the main methodological areas of scientific computation. The course provides the tools needed for students to use computers effectively in scientific work, whether in physics, chemistry, mathematics, economics, biology, psychology, or any field involving quantitative work. Programming in Matlab, a scientific-computing software package, with a focus on topics relevant to students' major fields of study. Lectures and formal labs.

Computer Organization

CSCI 210 - Stough

Multilevel machine organization studied at the levels of digital logic, microprogramming, conventional machine, operating system, and assembly language.

Algorithm Design and Analysis

CSCI 211 - Sprenkle

Methods for designing efficient algorithms, including divide-and-conquer, dynamic programming, and greedy algorithms. Analysis of algorithms for correctness and estimating running time and space requirements. Topics include advanced data structures, graph theory, network flow, and computational intractability.

Theory of Computation

CSCI 313 - Levy

A study of the principles of computer science embodied in formal languages, automata, computability, and computational complexity. Topics include context-free grammars, Turing machines, and the halting problem.

Interactive Computer Graphics

CSCI 340 - Stough

In this course we develop, step by step, a reasonably complete 3D computer-graphics system with the ability to generate a photo-realistic image given a specification of shapes, poses, lighting, textures, and material properties, and camera parameters and perspective. Final projects consist of using your system to produce your own computer-animated short. The necessary mathematical background is developed during the course.

Directed Individual Study

CSCI 403 - Sprenkle, Stough (Multiple Sections)

Individual conferences. May be repeated for degree credit if the topics are different.

Honors Thesis

CSCI 493 - Levy, Sprenkle, Stough (Multiple Sections)

Honors Thesis.