Associate Professor: Izmirli; Visiting Associate Professor: Winters-Hilt; Assistant Professors: Chung, Lee; Adjunct Instructor: Barnes; 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: C. Chung, O. Izmirli, J. Lee, 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. Registration is also required in Computer Science 110L.
Enrollment limited to 40 students. This course satisfies General Education Area 2. Staff
COMPUTER SCIENCE 110L INTRODUCTION TO COMPUTER SCIENCE AND PROBLEM SOLVING LAB Registration is also required in Computer Science 110.
COMPUTER SCIENCE 203 BIOINFORMATICS I An introduction to the use of informatics, genomics, and computational biology in analyzing biological data. Topics include DNA and protein sequences, interaction networks, gene expression, channel current analysis of DNA molecules, and computational techniques for retrieving, analyzing, and visualizing data. Focus on DNA analysis for gene finding, including simple program writing for data mining. No prior knowledge of programming required. Emphasis on projects involving interdisciplinary teams and medically related problems. This is the same course as Biology 203.
Prerequisite: Any 100-level course in computer science or biology, or permission of the instructor. Enrollment limited to 20 students. S. Winters-Hilt
COMPUTER SCIENCE 204 INFORMATICS PROGRAMMING An introduction to informatics and problem solving with the aid of computers, with applications relating to the natural sciences, social sciences, and humanities. Examples will be implemented using Perl and Python. Students will have the opportunity to explore applications of informatics within their own areas of academic interest.
Prerequisite: Any 100-level course in computer science, or permission of the instructor; Course 110 is recommended. Enrollment limited to 20 students. S. Winters-Hilt
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 15 students in Course 205 and 5 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. S. Winters-Hilt
COMPUTER SCIENCE 211 INFORMATICS I An introduction to informatics programming and problem solving with the aid of computers. Applications in the areas of science, social science, and the humanities, from creating a Shakespearean insult generator, to a text-based analysis of Machiavelli's Il Principe, to deciphering the gene structure in genomic DNA. Basic probability and statistics concepts will be introduced in a variety of settings, including anomaly detection using information measures and robust modeling in the presence of outliers.
Prerequisite: Course 110 or permission of the instructor. Enrollment limited to 20 students. S. Winters-Hilt
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. Enrollment limited to 20 students. 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. O. Izmirli
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 217 INTERACTIVE ENTERTAINMENT SOFTWARE DESIGN AND DEVELOPMENT An introduction to the design and programming of entertainment software (i.e., computer/video games). The course combines concepts relating to computer graphics, human-computer interaction, networking, artificial intelligence, computer architecture, and databases. Topics include video game history, gameplay design, software architecture for video games, contemporary video game platforms, and real-time computer graphics techniques. This is the same course as Arts and Technology 217.
Prerequisite: Course 110. Enrollment limited to 20 students. J. Lee
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. This is the same course as Arts and Technology 218.
Prerequisite: Course 110. Enrollment limited to 12 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. Enrollment limited to 20 students. 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. Enrollment limited to 20 students. Staff
COMPUTER SCIENCE 304 ALGORITHMS An introduction to the analysis of algorithms, both for run-time complexity and correctness. Students will use these skills as they learn and practice fundamental algorithm design techniques, including greedy, divide-and-conquer, dynamic programming, and network flow. The course concludes with a study of NP-completeness and methods for coping with NP-hard problems such as local search, randomization, and approximation algorithms.
Prerequisite: Course 212; Mathematics 210 is recommended. Enrollment limited to 30 students. C. Chung
COMPUTER SCIENCE 307 MACHINE LEARNING AND DATA MINING An introduction to 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, including clustering, classification, associations, deviation detection, and link analysis will be covered. Methods, such as hidden Markov models and support vector machines, will be applied to a variety of applications, including electrical signal analysis (mostly of biomedical origin, such as EEG, ECG, and channel current analysis), genomics, and finance. Data mining tools will be introduced and used to complete a project on real-world data.
Prerequisite: Course 212. Enrollment limited to 30 students. S. Winters-Hilt
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 309 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. This is the same course as Arts and Technology 209.
Prerequisite: Course 110 or permission of the instructor. This course is not open to students who have received credit for course 209. Enrollment limited to 20 students. J. Lee
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. Enrollment limited to 18 students. G. Parker
COMPUTER SCIENCE 311 INFORMATICS II An introduction to the use of informatics algorithms in analyzing various types of data. Methods include analysis of sequential data in a variety of settings, such as text-based, voice, photographic sequence (film), genomic structure analysis, proteomic data, and 'electrical' signal (ion channel signal data). The course considers classification, clustering, and metaheuristic search methods in a variety of applications including two very popular methods: hidden Markov models and Support Vector Machines.
Prerequisite: Course 211 or permission of the instructor; taking course 212 previously or concurrent with this course is recommended. Enrollment limited to 20 students. S. Winters-Hilt
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. This is the same course as Arts and Technology 312.
Prerequisite: Course 212. Enrollment limited to 12 students. 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 20 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. Enrollment limited to 20 students. 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. Enrollment limited to 30 students. 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 CYBERSECURITY An introduction to the principles and practices of cybersecurity, organized around three aspects of security: prevention, detection, and response. Topics include basic cryptography, concepts of secure protocol design, security policy and risk evaluation, monitoring and detection capabilities, and forensic techniques. A review of real-world case studies will expose students to the implications of cyber-attacks conducted by individuals and groups, criminal and extremist organizations, and nation states.
Prerequisite: Course 212. Enrollment limited to 20 students. 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. Enrollment limited to 20 students. 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 154 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