Computer Science

 
COURSE OFFERINGS
 
151fs    Computational Thinking     An introduction to computational thinking: how we can describe and solve problems using a computer. Using the Python language, students will learn how to write algorithms, manipulate information, and design programs to make computers useful tools. Designed both for majors and for students who want to learn how to apply the power of computing to their area of interest. A weekly laboratory session provides an opportunity for supervised hands-on learning. No previous computer experience required. Four credit hours.  Q.    SKRIEN, TAYLOR

198s    Computer Music    Understanding music requires knowledge of the processes that allow sounds to be organized into meaningful collections (pieces). An exploration of how musical processes can be expressed in quantifiable terms while still retaining the non-quantifiable "magic" that affects us in such powerful ways. Topics include fundamentals of computer music (MIDI, digital signal processing, etc.), the means by which larger "top-down" musical abstractions can be created and manipulated with the help of computers, and describing processes as algorithms and computer programs. Labs will focus on designing programs in the Python language to manipulate music and sound and integrate with digital music composition software. Four credit hours.  Q.    HALLSTROM, MAXWELL

231f    Data Structures and Algorithms     An introduction to the primary data structures and algorithms of computer science. Data structures to be covered include stacks, queues, lists, trees, graphs, heaps, and hash tables. Algorithms include searching and sorting and insertion, deletion, and traversal for common data structures. Students will learn and use Java for programming assignments. Prerequisite: A grade of C- or higher in Computer Science 151. Four credit hours.    EASTWOOD

232s    Computer Organization    An introduction to how computers work. Topics include memory, processors, input/output, virtual machines, and assembly language. Prerequisite: Computer Science 151. Four credit hours.    SKRIEN

251s    Data Analysis and Visualization    The analysis and visualization of scientific data. Topics will include data management, basic statistical analysis, data mining techniques, and the fundamental concepts of machine learning. Students will also learn how to visualize data using 2-D and 3-D graphics, focusing on techniques that highlight patterns and relationships. Course projects will use data from active research projects at Colby. Prerequisite: Computer Science 231. Four credit hours.    MAXWELL

[269]    Computer Game Design    Design of 2-D computer games using a commercial game engine for non-majors. Topics include game design, artistic concepts, image manipulation, game scripting, and basic artificial intelligence concepts. Students will work in groups that mix Computer Science majors and non-majors to design a 2-D game to be distributed at the end of the term. Prerequisite: Permission of the instructor. Three credit hours.    

[270]    Advanced Computer Graphics     Advanced topics in computer graphics for non-majors. Spring 2009 focus was video game design. Students first analyze current games and the process of game design. After building an initial design, students learn to build a game, and game content, using a 3D game engine. The middle of the semester covers creating interesting computer players, including AI and robotics techniques for intelligent agent design. The final section covers advanced graphics techniques and the internals of a video game engine. Prerequisite: Permission of the instructor. Four credit hours.    

297f    Web Programming    A practical introduction to the art and science of building dynamic (interactive) web sites. Topics include the Internet, HTML, CSS style sheets, XML, event-driven programming, client-side programming, and server-side programming. Web 2.0 features will also be discussed through the use of AJAX (Asynchronous Javascript and XML) to access databases on the server. This will be a lab-based course in which students will develop their own web sites. Prerequisite: Computer Science 151 or some previous programming experience and permission of the instructor. Four credit hours.    SKRIEN

297Jj    Introductory Bioinformatics    An introduction to bioinformatics methods and theory for students with a basic understanding of molecular biology. Topics will include genetic databases, sequence alignment, phylogenetic methods, structure prediction, genome assembly and annotation, protein structures, and gene expression analysis. A research project with a final oral presentation and term paper is required. Prerequisite: Biology 163 or Computer Science 341. Three credit hours.  Q.    MCCLELLAN

333f    Programming Languages    A survey of programming languages and programming language paradigms, including the history, design, and formal definitions of different languages. Includes study of imperative (e.g., C, Pascal, Ada, Fortran), logic (e.g., Prolog), functional (e.g., ML, Lisp, Scheme), and object-oriented (e.g., Java, Smalltalk, CLOS, C++, Eiffel) programming languages. Languages are compared to see how well they achieve the goals of solving various types of problems in an efficient and readable manner. Prerequisite: Computer Science 231. Four credit hours.    MAXWELL

[336]    Parallel and Distributed Processing    Parallel and distributed paradigms, architectures, and algorithms, and the analytical tools, environments, and languages needed to support these paradigms. Prerequisite: Computer Science 231 and 232. Four credit hours.    

341f    Systems Biology I     An introduction to systems biology—the process of biological discovery through the development and analysis of mathematical models. Topics include developing and using computational methods to process data, to build models, and to simulate models. Students will be given weekly exercises to reinforce concepts discussed in class, the textbook, and journal articles. Prerequisite: Computer Science 151, and Mathematics 121 or equivalent, and one of the following: Biology 163 or 164; Mathematics 212, 253 or a 300-level course; or any 300-level Computer Science course. Four credit hours.    TAYLOR

[351]    Computer Graphics    An introduction to computer graphics covering 2-D graphic primitives, clipping graphic objects to boundaries, linear transformations, creating and representing 3-D objects, converting 3-D models into 2-D images, and rendering complex 3-D scenes made of thousands of polygons. Students will generate images and develop portfolios of their own work. Prerequisite: Computer Science 231. Four credit hours.    

[356]    Introduction to Compiler Construction    Introduction to the theory, basic techniques, and design of compilers and interpreters of general purpose programming languages; grammars, symbol tables, lexical analysis, semantic analysis, code generation, and optimization. Offered in alternate years. Prerequisite: Computer Science 231 and 232. Four credit hours.    

[357]    Operating Systems     An introduction to systems-programming concepts with an emphasis on timeshare systems and networking. Topics may include storage and memory management, scheduling, I/O, communication, and security. Offered in alternate years. Prerequisite: Computer Science 231 and 232. Four credit hours.    

[361]    Object-Oriented Design    Object-oriented design techniques for producing modular, extensible software, focusing on learning good programming style, object-oriented design principles, and design patterns. Students will examine case studies of moderately large programs and tools such as CRC cards and UML. A significant programming component. Prerequisite: Computer Science 231. Four credit hours.    

363f    Robotics     The study of building and programming physical machines with intentionality that can sense their environment and manipulate and change it. Topics include navigation, robot kinematics, sensing, mapping, localization, visual sensing, planning, and human-robot interaction. Students will program robots to execute tasks ranging from basic navigation to social interaction with people in natural human spaces. Prerequisite: Computer Science 251 and 333. Computer Science 333 may be taken concurrently. Four credit hours.    MAXWELL

365s    Computer Vision    Focuses on automatic visual object recognition and real-time human-computer visual interfaces, culminating in a final project that permits sophisticated visual interaction with a desktop computer or robot. Covers numerous algorithms and analysis techniques of computer vision relevant to these tasks, including 2D binary, grayscale, and color image analysis, image and data filtering, segmentation, texture analysis, 3D stereo, 3D model representation and generation, and pattern classification techniques. Prerequisite: Computer Science 251. Four credit hours.    EASTWOOD

[369]    Computer Game Design    Design of 2-D computer games using a commercial game engine, for computer science majors. Topics include game design, artistic concepts, image manipulation, game scripting, and basic artificial intelligence concepts. Students will work in groups that mix computer science majors and non-majors to design a 2-D game to be distributed at the end of the term. Prerequisite: Computer Science 231. Three credit hours.    

[375]    Analysis of Algorithms    Analysis of the space and time efficiency of algorithms. Graph, genetic, parallel, and mathematical algorithms as well as algorithms used in cryptology may be explored. Offered in alternate years. Prerequisite: Computer Science 231. Four credit hours.    

378s    Introduction to the Theory of Computation    Formal languages, automata theory, computability, recursive function theory, complexity classes, undecidability. Offered in alternate years. Also listed as Mathematics 378. Prerequisite: Computer Science 231 and either Mathematics 274 or 275. Four credit hours.    SKRIEN

441s    Systems Biology II    The application of principles learned in Systems Biology I to a particular biological system. Students will read journal articles, design numerical experiments, and analyze results as part of a semester-long project, culminating in a comprehensive report and presentation. Prerequisite: Computer Science 151 and 341. Four credit hours.    TAYLOR

[451]    Advanced Computer Graphics     Advanced topics in computer graphics for computer science majors. Spring 2009 focus was video game design. Students first analyze current games and the process of game design. After building an initial design, students learn to build a game, and game content, using a 3D game engine. The middle of the semester covers creating interesting computer players, including AI and robotics techniques for intelligent agent design. The final section covers advanced graphics techniques and the internals of a video game engine. Prerequisite: Computer Science 351. Four credit hours.    

[481]    Minor Capstone     Independent project and capstone experience for minors. Taken in tandem with a course in the student's major to develop a computing project in consultation with his or her computer science advisor that relates to or extends a topic from the related course. Three or four credit hours.    

[482]    Minor Capstone     Independent project and capstone experience for minors. Taken in tandem with a course in the student's major to develop a computing project in consultation with her or his computer science advisor that relates to or extends a topic from the related course. Three or four credit hours.    

484s    Honors Research in Computer Science     One to four credit hours.    FACULTY

484s    Honors Independent Study    The independent study component of the honors program in computer science. Cannot be counted toward the major or minor. Prerequisite: Permission of the instructor and admission to the honors program. Three or four credit hours.    FACULTY

491f, 492s    Independent Study    Independent study in an area of computer science of particular interest to the student. Prerequisite: Permission of the instructor. One to four credit hours.    FACULTY