| CPSC 110 |
| Principles of Computation |
| Computers have recently become so powerful that some even believe they will someday exceed human intelligence. However, the underlying basic structure of computers has remained surprisingly simple, and this elegant design is unlikely to change anytime soon. In this course, students will first read a romantic novel that introduces this fundamental concept and the vast world of computer science. Meanwhile, to understand and appreciate basic laws of computation, students will also learn how to program computers elegantly, using the Scheme language in which programs are usually simple functions. Fundamental constructs such as lists, functions and recursion will be covered. This course will thus focus on the simple but beautiful nature of computation, without nonessential technical details. |
|
1.00 units, Lecture
|
| CPSC 110 |
| Open Source Software for Humanity |
| Free and open source software (FOSS) is software that can be modified, customized, and redistributed by users and programmers. From its modest beginnings in the 1970s through the rapid growth of the Internet and the Linux operating system, today's open source software movement is a global enterprise involving hundreds of thousands of programmers working together on thousands of software programs. A growing number of FOSS programs have a humanitarian focus. In this course, we will both learn about and contribute to a real open source project. We will work with the Sahana system, a crisis management system that was built in the aftermath of the Asian tsunami. We will learn to write Web-based application software using FOSS tools. Come and join the open source movement. |
|
1.00 units, Lecture
|
| CPSC 114 |
| Introduction to Internet Computing |
| An elementary introduction to internet applications and internet programming. Use of internet applications involved with remote login, file transfer, Web browsing, and Web page creation will be explored. A programming language which can be used to add dynamic features to Web pages will be studied. Fundamental programming concepts, including variables, functions, parameters, assignments, control structures, and objects will be introduced. Intended as a first computer science course for students who are considering computer science as a major or who are exploring taking additional computer science courses but who do not have the background needed for Computer Science 115L. Not open to students enrolled in or who have credit for Computer Science 115L. |
|
1.00 units, Lecture
|
| CPSC 115 |
| Introduction to Computing |
| A fundamental treatment of computer science topics featuring the study of the high-level programming language Java. Topics discussed will include computer architecture, programming languages, and ethical issues involved in computer use. Problem-solving techniques involved in writing programs will be studied, proper style and documentation will be required, and object-oriented program design will be introduced. A required weekly lab will involve an intensive study of programming techniques in Java. |
|
1.25 units, Lecture
|
| CPSC 203 |
| Mathematical Foundations of Computing |
| An introduction to the principles of logic and discrete mathematics required in the study of computer science. Topics covered may include: propositional and predicate logic and their relationship to general proof techniques used in computing and correctness proofs of programs; mathematical induction applied to recursion and recurrence relations; set theory with an emphasis on infinite sets used in computing; counting principles useful in analyzing graphs and trees; relations and functions and their relationship to databases and functional programming languages. Computer programs will be used to explore concepts examined in the course. |
|
1.00 units, Lecture
|
| CPSC 210 |
| Advanced Web Design |
Websites provide mechanisms not only to present material, but to provide users with an interactive experience. This course covers topics in advanced website design and creation and the variety of capabilities which can be incorporated into websites. The course also introduces students to the technology that supports websites and to emerging web-related technologies. Prerequisite: C- or better in Computer Science 115L. |
|
1.00 units, Seminar
|
| CPSC 215 |
| Data Structures and Algorithms |
A study of data structures and algorithms using a high-level programming language. The basic data structures (lists, stacks, queues, trees, and files) and basic algorithms (searching, sorting, and file management) will be introduced and implemented. Data and procedural abstraction, software design principles, and the analysis of the complexity of algorithms will be discussed. Details related to programming will be covered in a required weekly lab. Prerequisite: C- or better in Computer Science 115L. |
|
1.25 units, Lecture
|
| CPSC 219 |
| Theory of Computation |
A selection of topics intended to serve as an introduction to formal languages and automata theory. The topics will be chosen from among finite state machines, pushdown automata, Turing machines, the Chomsky language hierarchy and related questions of computability. Prerequisite: C- or better in Computer Science 115L and either Computer Science 203 or Mathematics 205. |
|
1.00 units, Lecture
|
| CPSC 225 |
| Topics in Application Programming |
The study of a specific topic related to the application of principles of programming to real-world problems. Topics will vary from year to year depending on current issues in programming or interests of the instructor. This course will be open to CS students from Connecticut College and Wesleyan University under the Mellon grant and will be taught as a seminar/project course using the video conferencing technology for weekly class meetings. The course will involve analyzing, designing, and implementing open-source software. The focus of the project will be Sahana, an award-winning open-source disaster recovery information system that has been deployed internationally in several natural disasters, including the 2005 Asian Tsunami and the 2005 Pakistani earthquake. In terms of software tools, we will use the LAMP platform (Linux, Apache, MySQL, and PHP). Students can expect to work in teams on real-world tasks. Class meetings will address standard software engineering practices and principles, such as refactoring, unit testing, design and documentation standards, and other related topics. Prerequisite: C- or better in Computer Science 115L. |
|
1.00 units, Lecture
|
| CPSC 230 |
| Machine Organization and Assembly Language |
This course introduces the fundamentals of computer architecture and the mechanics of information transfer and control with emphasis on general concepts. Topics will include instruction formats, addressing techniques, data representation, program control, the fetch-execute cycle, macro definition, and assembler concepts. Students will write several programs in an assembly language. Prerequisite: C- or better in Computer Science 215L and either Computer Science 203 or Mathematics 205 (or concurrent enrollment in 203 or 205). |
|
1.00 units, Lecture
|
| CPSC 240 |
| Principles of Software Engineering |
The study of issues involved in developing large-scale software systems. Topics covered include software life cycle, system design and specification, advanced programming concepts and techniques for software testing, debugging and maintenance. The issues studied will be applied to team projects. Prerequisite: C- or better in Computer Science 215L and either Computer Science 203 or Mathematics 205 (or concurrent enrollment in 203 or 205). |
|
1.00 units, Lecture
|
| CPSC 304 |
| Computer Graphics |
An introduction to geometric and computer graphics principles needed for developing software with graphical output. General principles of designing and testing of software systems with reusable components will be emphasized. Geometry and computer graphics topics covered will include coordinate systems, geometric transformations, windowing, curves, fractals, polyhedra, hidden lines, surfaces, color, and shading. Graphical programs that model phenomena from the natural sciences or aid the visualizing of conceptual models in computer science and mathematics will be used for examples and assignments. Prerequisite: Mathematics 132 and a C- or better in Computer Science 215L. |
|
1.00 units, Lecture
|
| CPSC 315 |
| Systems Software |
A study of the organization and implementation of computer operating systems. Topics include operating systems organization, file systems, memory and process management, resource allocation, recovery procedures, multiprogramming, and distributed processing. The Unix operating system will be used and emphasis will be placed on how various system functions have been implemented in the Unix environment. Prerequisite: C- or better in Computer Science 215L and either Computer Science 203 or Mathematics 205 (or concurrent enrollment in 203 or 205). |
|
1.00 units, Lecture
|
| CPSC 316 |
| Foundations of Programming Languages |
A study of the organization, specification, and behavior of programming languages. The course will focus on five different programming language paradigms: imperative, object-oriented, functional, logic, and concurrent. Programming assignments using example languages from each of these paradigms will be required. Emphasis will be placed on learning C++, PROLOG, and LISP in a Unix environment. Other topics covered include language syntax, control structures, objects, and functions. Prerequisite: C- or better in Computer Science 215L and either Computer Science 203 or Mathematics 205 (or concurrent enrollment in 203 or 205). |
|
1.00 units, Lecture
|
| CPSC 320 |
| Analysis of Algorithms |
A continuation of the study begun in Computer Science 215 of the complexity of algorithms used in computing. The notions of P, NP, and NP-complete problems and of noncomputability will be covered. The algorithms studied will include examples involving sorting, graphs, geometry, and combinatorics. Theoretical aspects of algorithms will be studied as well as practical aspects useful in writing programs. Prerequisite: C- or better in Computer Science 215L and either Computer Science 203 or Mathematics 205 (or concurrent enrollment in 203 or 205). |
|
1.00 units, Lecture
|
| MATH 320 |
| Analysis of Algorithms |
|
No Course Description Available.
|
|
1.00 units, Lecture
|
| CPSC 333 |
| Computer Networks |
An introduction to the principles and practices of local area and wide area networking. Topics include the study of the layers of computer networking, network configurations, protocols, security, and reliability. Issues related to implementing networking configurations will be studied. Prerequisite: C- or better in Computer Science 215L and either Computer Science 203 or Mathematics 205 (or concurrent enrollment in 203 or 205). |
|
1.00 units, Lecture
|
| CPSC 340 |
| Principles of Software Engineering |
The study of issues involved in developing large-scale software systems. Topics covered include software life cycle, system design and specification, advanced programming concepts, and techniques for software testing, debugging, and maintenance. The issues studied will be applied to team projects. Prerequisite: C- or better in Computer Science 215L and either Computer Science 203 or Mathematics 205 (or concurrent enrollment in 203 or 205). |
|
1.00 units, Lecture
|
| CPSC 352 |
| Artificial Intelligence |
A study of basic principles and research methods in artificial intelligence. The course exposes students to selected topics in the field including pattern recognition, problem solving, theorem proving, knowledge representation, and natural language understanding by computers. The course will draw on recent advances made by cognitive scientists in each of these applications. Students are expected to study the theoretical background of an application. They will also complete several programming and simulation assignments during the semester. Prerequisite: C- or better in Computer Science 215L and either Computer Science 203 or Mathematics 205 (or concurrent enrollment in 203 or 205). |
|
1.00 units, Lecture
|
| CPSC 365 |
| Distributed Computing |
| The study of the fundamental concepts involved in designing computations capable of executing in an environment composed of multiple, distinct computers. Topics covered include: virtual time and global states, synchronization, data consistency, distributed computing models and paradigms, deadlock and fault tolerance. Prerequisite: Computer Science 230. |
|
1.00 units, Lecture
|
| CPSC 371 |
| Compiler Theory |
A study of the use of language theory and automata theory in the design and construction of compilers. Topics to be discussed include lexical analysis, parsing, symbol tables, syntax trees, storage allocation, error recovery, translation systems, code generation, and optimization. Students will practice programming by writing a portion of a compiler for a subset of ALGOL, Pascal or some other language. Prerequisite: C- or better in Computer Science 230 (Machine Organization) or 316 (Programming Languages). |
|
1.00 units, Lecture
|
| CPSC 372 |
| Database Fundamentals |
Principles of database systems, including such topics as data independence, storage structures, relational data models, network data models, security, and integrity. A programming project may be required. Prerequisite: C- or better in Computer Science 215L and either Computer Science 203 or Mathematics 205 (or concurrent enrollment in 203 or 205). |
|
1.00 units, Lecture
|
| CPSC 375 |
| High-Performance Computing |
This course will introduce various programming models and techniques for multiprocessors. Students will design, implement, and evaluate parallel algorithms for solving complex problems that demand high computational speed. Topics covered include parallel machine architecture, analysis of parallel algorithms, load balancing, and various parallel algorithms including sorting, searching, linear systems, and image processing. Prerequisite: C- or better in CPSC 215 and one semester of calculus (MATH 131) |
|
1.00 units, Lecture
|
| CPSC 399 |
| Open Semester |
|
No Course Description Available.
|
|
4.00 units, Independent Study
|
| CPSC 401 |
| Discrete Math & Computer Theory |
|
No Course Description Available.
|
|
1.00 units, Lecture
|
| CPSC 403 |
| Computer Science Seminar |
| Students engaged in research (Computer Science 419) or independent study (Computer Science 399) and senior exercise students will meet with computer science faculty for oral presentations and critical discussions of journal papers, research plans, and research progress. Seniors using this course to satisfy the senior exercise requirement will be expected to complete a research or design project and make a formal presentation on its results to the seminar. The project may be an extension or revision of a project conducted in one of their other major courses. |
|
0.50 units, Seminar
|
| CPSC 404 |
| Computer Science Seminar |
Students engaged in research (Computer Science 419) or independent study (Computer Science 399) and senior exercise students will meet with computer science faculty for oral presentations and critical discussions of journal papers, research plans, and research progress. Seniors using this course to satisfy the senior exercise requirement will be expected to complete a research or design project and make a formal presentation on its results to the seminar. The project may be an extension or revision of a project conducted in one of their other major courses. Prerequisite: This course open to senior computer science majors only. |
|
0.50 units, Seminar
|
| CPSC 415 |
| Special Topics: Advanced Web Programming |
The World Wide Web was proposed originally as a collection of static documents inter-connected by hyperlinks. Today, the web has grown into a rich platform, built on a variety of protocols, standards, and programming languages, that aims to replace many of the services traditionally provided by a desktop operating system. Topics will include: producing dynamic content using server-based languages (e.g., Java), content serving database and XML documents, session state management, multi-tier web-based architectures, client-side presentation languages (JavaScript), AJAX, and more. The course is hands-on and project-based; students will construct a substantial dynamic website based on the technologies and techniques presented during lecture. Prerequisite: C- or better in Computer Science 215. |
|
1.00 units, Lecture
|
| CPSC 419 |
| Research in Computer Science (Library) |
Students will conduct original research projects, culminating with a final formal paper, under the direction of an individual faculty member. Students electing this type of independent study should plan on initiating the work no later than the fall of their senior year. Honors candidates should plan on no less than two semesters of study; others may enroll in one or more semesters. A written research plan must be submitted during the semester prior to taking this course. Prerequisites: permission of the instructor and concurrent enrollment in Computer Science 403 or 404. This course may be repeated for credit. Submission of the special registration form, available in the Registrar's Office, and the approval of the instructor and chairperson are required for enrollment. Concurrent registration in Computer Science 403 (fall term) or Computer Science 404 (spring term) is required. |
|
0.50 units, Independent Study
|
| CPSC 425 |
| Research in Computer Science (Laboratory) |
Students will conduct original research projects, culminating with a final formal paper, under the direction of an individual faculty member. Students electing this type of independent study should plan on initiating the work no later than the fall of their senior year. A written research plan must be submitted during the semester prior to taking this course. Prerequisites: permission of the instructor and concurrent enrollment in Computer Science 403 or 404. This course may be repeated for credit. Submission of the special registration form, available in the Registrar's Office, and the approval of the instructor and chairperson are required for enrollment. Concurrent registration in Computer Science 403 (fall term) or Computer Science 404 (spring term) is required. |
|
0.50 units, Independent Study
|
| CPSC 435 |
| Computational Biology |
Recent advances in understanding the molecular basis of life rely not only on the traditional laboratory methods of the biologist but also on computational techniques for extracting meaning from enormous amounts of data. This field presents hard new problems to the computer scientist, as well as opportunities to bring existing techniques to bear on a new domain. In this course we will study algorithms and data structures that address such problems as multiple sequence alignment, physical mapping, three-dimensional structure prediciton, genome rearrangements, and the construction of phylogenetic trees. Prequisite: C- or Better in Computer Science 320. |
|
1.00 units, Lecture
|
| CPSC 466 |
| Teaching Assistantship |
| Submission of the special registration form, available in the Registrar's Office, and the approval of the instructor and chairperson are required for enrollment. |
|
0.50 units min / 1.00 units max, Independent Study
|
| CPSC 490 |
| Research Assistantship |
|
No Course Description Available.
|
|
0.50 units min / 1.00 units max, Independent Study
|
| CPSC 498 |
| Senior Project Part 1 |
| This course is comprised of a research or implementation project and a final written report. This course is open to all senior majors who intend to complete a two-semester project and is required of all students who wish to earn honors in computer science. A student who intends to complete a year-long project must locate a project advisor and must submit a preliminary proposal to the project adviser by the last day of classes in the spring semester of the junior year. In addition to the proposal, submission of the special registration form, available in the Registrar's Office, and the approval of the instructor and chairperson are required for each semester of this year-long project. (0.5 course credits are considered pending in the first semester; 0.5 course credits will be awarded for completion in the second semester.) |
|
1.00 units, Independent Study
|
| CPSC 499 |
| Senior Project Part 2 |
| This course is comprised of a research or implementation project and a final written report. This course is open to all senior majors who intend to complete a two-semester project and is required of all students who wish to earn honors in computer science. A student who intends to complete a yearlong project must locate a project adviser and must submit a preliminary proposal to the project adviser by the last day of classes in the spring semester of the junior year. In addition to the proposal, submission of the special registration form, available in the Registrar's Office, and the approval of the instructor and chairperson are required for each semester of this year-long project. (0.5 course credits are considered pending in the first semester; 0.5 course credits will be awarded for completion in the second semester.) |
|
1.00 units, Independent Study
|
|