Professor: Baird; Associate Professor: Izmirli; Assistant Professor: Chung; Professor Parker, chair
Courses provide students with computer science theory and skills, equipping them for research or practical application.
The Major in Computer Science
The major consists of Mathematics 210, Computer Science 110, 212, 219, 304, 315 or 326, two semesters of computer science research (Honors Study or two semesters of 495/496), a one-credit colloquium series (499), and five or more courses chosen from the following: computer science courses at the 200 level or higher, and Mathematics 226. Each individualized program of study will incorporate depth in a particular area, related research, and interdisciplinarity. Students are strongly encouraged to complete a summer internship approved by the department.
Advisers: B. Baird, C. Chung, O. Izmirli, G. Parker
The Minor in Computer Science
The minor consists of Computer Science 110, 212, 219, and two or more courses chosen from the following: computer science courses at the 200 level or higher (excluding 499), Mathematics 210. Only one course may count toward both a major and a minor, but other approved courses at the same level or higher may be substituted.
Learning Goals in the Computer Science Major
A computer science major at Connecticut College will enter a variety of learning environments and gain an understanding of the discipline through courses, independent research, colloquia, workshops, internships, and seminars.
Emphasis is placed on the student′s ability to solve problems and think independently as well as understand the role of computer science in and amongst the liberal arts. Upon completing a challenging course of study, the student will be expected to possess a collection of broad characteristics and have acquired a specific set of capabilities and skills: cognitive capabilities and practical skills related to computer science and additional transferable skills of a general nature that are applicable in many other contexts. The specific capabilities and skills are listed below.
COGNITIVE CAPABILITIES AND SKILLS RELATING TO COMPUTER SCIENCE
- Knowledge and Understanding. Demonstrate knowledge and understanding of essential facts, concepts, principles, and theories relating to computer science and software applications; be able to incorporate technical results into that knowledge and understanding.
- Modeling. Use such knowledge and understanding in the modeling and design of computerbased systems in a way that demonstrates understanding of the requirements, comprehension of the tradeoff involved in design choices, and awareness of critical evaluation and testing.
- Professional Responsibility. Recognize and be guided by the social, professional, and ethical issues involved in the use of computer technology.
- Liberal Arts. Understand the discipline of computer science as a liberal art and actively engage in exploring its connections to other disciplines.
PRACTICAL CAPABILITIES AND SKILLS RELATING TO COMPUTER SCIENCE
- Problem-solving. Use appropriate theory, practices, and tools to specify, design, implement, test, and evaluate systems to solve problems in computer science and other fields.
- Applications. Understand applications of computer science in a range of fields.
- Tools and Operation. Deploy effectively the tools used for the construction and documentation of software and be able to operate computing equipment and software systems effectively.
- Research. Use computer science knowledge to conduct original research; read, understand, and produce technical papers.
ADDITIONAL TRANSFERABLE SKILLS
- Communication. Be able to make succinct presentations to a range of audiences about technical problems and their solutions.
- Teamwork. Be able to work effectively as a member of a development team.
- Numeracy. Be able to understand and explain the quantitative dimensions of a problem.
- Self Management. Manage one′s own learning and development, including time management and organizational skills.
- Professional Development. Keep abreast of current developments in the discipline in order to continue one′s own professional development.
COMPUTER SCIENCE 105 OPEN SOURCE SOFTWARE FOR HUMANITY An introduction to free and open source software (FOSS) and its applications to humanitarian issues. Participants will learn to write web-based application software using FOSS tools while contributing to a real open source humanitarian project.
Enrollment limited to 30 students. This course satisfies General Education Area 2. Staff
COMPUTER SCIENCE 110 INTRODUCTION TO COMPUTER SCIENCE AND PROBLEM SOLVING An introduction to programming and problem solving with computers. Practical applications in a wide range of fields will be covered; the current programming language is Python. Important topics in computer science will also be discussed. No prior programming experience is assumed.
Enrollment limited to 40 students. This course satisfies General Education Area 2. Staff, O. Izmirli
COMPUTER SCIENCE 205, 305 TOPICS IN SOFTWARE DEVELOPMENT Principles of software development applied to real-world problems. The problems addressed and computer languages used will vary depending on the available opportunities for application. Students will be part of a team that develops a software system for a real-world customer. Students in Course 305 will be team leaders.
Prerequisite for Course 205: Any 100-level course in Computer Science. Prerequisite for Course 305: Course 212. Enrollment limited to 21 students in Course 205 and 7 students in Course 305. Staff
COMPUTER SCIENCE 206 COMPUTATIONAL AND SYSTEMS BIOLOGY An introduction to the use of genomics, systems biology, and computational biology in analyzing and synthesizing biological data. Topics include DNA and protein sequences, interaction networks, gene expression, and computational techniques for retrieving, analyzing, and visualizing data. Emphasis on projects involving interdisciplinary teams and medically related problems. This is the same course as Biology 206.
Prerequisite: Course 110 or Biology 106. Enrollment limited to 30 students. R. Peitzsch, D. Eastman
COMPUTER SCIENCE 209 GRAPHICS AND VIRTUAL ENVIRONMENTS An introduction to the basics of graphics and the field of virtual reality, including applications and issues relating to three-dimensional graphics, sound, vision, and touch. Students will program virtual reality worlds with appropriate hardware and software.
Prerequisite: Course 110 or permission of the instructor. This course is not open to students who have received credit for Computer Science 309. B. Baird
COMPUTER SCIENCE 212 DATA STRUCTURES Abstract data structures such as lists, stacks, queues, and trees will be studied as well as programming techniques using recursion and pointers. Principles of software design will be explored by constructing major programs.
Prerequisite: Course 110. Staff
COMPUTER SCIENCE 214 WEB TECHNOLOGIES AND MOBILE COMPUTING Software development for web-based applications such as web sites, mobile apps, client-side, server-side, and back-end systems using current web technologies. Design elements including organizational structure, interactivity, navigation strategies, and multimedia. The course will concentrate on a small selected set of technologies for hands-on work.
Prerequisite: Course 110. Enrollment limited to 30 students. Staff
COMPUTER SCIENCE 215 DIGITAL DESIGN Digital design, binary number systems and representation, boolean algebra and gate implementation, combinatorial and sequential circuits, and digital storage components used in computers. Software simulation will be used. This is the same course as Physics 225.
Prerequisite: Course 110 or permission of instructor. O. Izmirli
COMPUTER SCIENCE 218 MULTIMEDIA The representation, storage, processing and transmission of multimedia content, comprised of text, audio, still images, video, graphics, animation and other types of media are discussed. Human perception of audio and video will be studied to be followed by concepts underlying compression algorithms of multimedia content. Multimedia programming will be introduced and students will complete projects that involve design, implementation and evaluation.
Prerequisite: Course 110. Enrollment limited to 20 students. O. Izmirli
COMPUTER SCIENCE 219 COMPUTER ORGANIZATION Processors, primary memory, secondary memory and input/output mechanisms of computers are discussed. The computer structure is studied at a progression of levels: digital logic level, microarchitecture level, instruction set architecture level, operating system machine level and assembly language level.
Prerequisite: Course 110. Staff
COMPUTER SCIENCE 303 DATABASE SYSTEMS An examination of the fundamental concepts of database systems. Database design, database languages, and database-system implementation. Analysis of the role of databases in the decision making process and their use in strategic planning. A project to develop a database management system is required.
Prerequisite: Course 212 or permission of the instructor. Staff
COMPUTER SCIENCE 304 ALGORITHMS Algorithms form the basis for problem solving in computer science. This course examines different types of algorithms, including sorting, graph, divide-and-conquer, and greedy. Computational complexity and analysis of algorithms are also studied.
Prerequisite: Course 212; Mathematics 210 is recommended. C. Chung
COMPUTER SCIENCE 307 MACHINE LEARNING AND DATA MINING This course will cover the basic theory, concepts, and techniques of machine learning and data mining including decision trees, neural networks, logistic regression, and data preparation, modeling, and presentation. Data mining techniques, such as clustering, classification, associations, deviation detection, and link analysis will be covered. Applications in different domains, such as science, finance, crime detection, and genomics, will be examined. Data mining tools will be introduced and used to complete a project on real-world data.
Prerequisite: Course 212. Staff
COMPUTER SCIENCE 308 ALGORITHM DEVELOPMENT AND ENGINEERING Students will implement a broad range of the most commonly used algorithms, including algorithms for sorting, searching, encryption, compression, finding optimal paths through networks, etc. The algorithms developed will employ techniques like dynamic programming and local search, and data structures like trees and graphs. Basic software engineering principles will also be studied and used. This course is programming intensive.
Prerequisite: Course 212. Enrollment limited to 30 students. C. Chung
COMPUTER SCIENCE 310 ROBOTICS An introduction to the design and control of autonomous robots. Design issues such as wheels verses legs, actuator placement, the use of sensors for perception, controller selection, and wiring will be covered. Students will develop control schemes and use programming skills and machine learning to generate programs for controllers.
Prerequisite: Course 212, 215, or 219. G. Parker
COMPUTER SCIENCE 312 DIGITAL SOUND PROCESSING An introduction to digital processing of sound; the study of capturing, creating, storing and processing of audio. Acoustics, digitization, representation, storage, filtering, effects, frequency analysis, programming for real-time and off-line sound processing, synthesis, spatialization, audio encoding and compression. Students will complete programming projects.
Prerequisite: Course 212. O. Izmirli
COMPUTER SCIENCE 313 TOPICS IN ALGORITHMIC GAME THEORY An introduction to the computer science field of algorithmic game theory, which combines the study of scenarios where competing entities interact strategically (a.k.a. ″games″) with algorithmic/computational thinking. No prior experience in game theory or algorithms analysis is required.
Prerequisite: Course 212; or Course 110 and Mathematics 210. Enrollment limited to 30 students. C. Chung
COMPUTER SCIENCE 315 COMPUTER NETWORKS Characteristics and applications of various networking technologies will be studied. Introduction to communication and network architectures, data communication concepts, local area network technologies, internetworking and performance issues in computer networks. Devices and means of data communication, error detection and recovery mechanisms, data link protocols, routing and congestion control algorithms, transport and application protocols, and network level services are discussed.
Prerequisite: Courses 212 and 219. Enrollment limited to 16 students. O. Izmirli
COMPUTER SCIENCE 316 ARTIFICIAL INTELLIGENCE Introduces a breadth of concepts used by researchers in their attempt to develop an artificial mind. General areas covered include search techniques, propositional and first order logic, representation, production systems, planning, learning and connectionist systems (neutral networks).
Prerequisite: Course 212 or permission of the instructor. G. Parker
COMPUTER SCIENCE 320 PROGRAMMING LANGUAGES An introduction to the theory of programming languages, formal syntax, input and output, recursion, branching and looping, parameter binding and passing, data typing and subprograms. Several languages will be studied.
Prerequisite: Course 212 or 219. Staff
COMPUTER SCIENCE 323 THEORY OF COMPUTATION This is the same course as Mathematics 323. Refer to the Mathematics listing for a course description.
COMPUTER SCIENCE 325 INTRODUCTION TO NETWORK AND COMPUTER SECURITY An introduction to the principles and practices of computer and network security. Course organized around the three principles of security: prevention, detection, and response. Topics include basic cryptography, concepts of secure protocol design, security policy and risk evaluation, types of and defense against real-world attacks, and forensic techniques.
Prerequisite: Course 212. Staff
COMPUTER SCIENCE 326 OPERATING SYSTEMS An introduction to computer operating systems. The primary functions of an operating system, such as process management, memory management, and device management, will be covered. Other relevant issues, such as security, networking, and distributed systems, will be discussed.
Prerequisite: Courses 212 and 219. Staff
COMPUTER SCIENCE 407 COMPUTATIONAL INTELLIGENCE Computational methods that display aspects of intelligent behavior observed in humans. Topics may include fuzzy logic, an alternative to traditional formal logic; artificial neural networks, networks of simple arithmetic computing elements that abstractly simulate neurons; and genetic algorithms, based on the laws of survival of the fittest and heredity. How these methods deal with vague, imprecise, and uncertain knowledge; learn from experience; self-organize; and adapt their behavior in response to changing conditions to solve real world problems. Utilization of projects and the discussion of technical papers to cover methods of computational intelligence and their use.
Prerequisite: Course 304, 310, 316, or 320. Enrollment limited to 12 students. G. Parker
COMPUTER SCIENCE 495, 496 RESEARCH SEMINAR Practicum in computer science research. An introduction to research methods followed by a major project. Students will read, present, and discuss technical papers; write a research proposal; make weekly reports; raise issues for class discussion; complete their research; write a technical paper; and do a public presentation. May be repeated for credit.
Prerequisite: A 300-level course in the specific area of research. Enrollment limited to 15 students. Staff
COMPUTER SCIENCE 499 COMPUTER SCIENCE COLLOQUIUM Technical presentations of computer science research. One hour of credit, marked as pass/not passed. For restrictions on the number of one-credit courses that can be applied toward the minimum degree requirements, see page 338 of the undergraduate catalog.
Enrollment limited to 40 students. Staff
COMPUTER SCIENCE 291, 292 INDIVIDUAL STUDY
COMPUTER SCIENCE 391, 392 INDIVIDUAL STUDY
COMPUTER SCIENCE 491, 492 INDIVIDUAL STUDY
COMPUTER SCIENCE 497-498 HONORS STUDY