CPSC 100 |
Essentials of Computing for Innovation |
This short course provides an introduction to the most essential aspects of computing and a survey of applications in today's emerging field of digital technology, while exploring their confluence and innovation thinking. Students will learn fundamentals of problem solving and programming using Python. Students will also be introduced to artificial intelligence, blockchain technologies, cybersecurity fundamentals, data analysis and visualization and software engineering. In the final days of the course, students will work together in teams to address and solve real-world challenges. This course assumes no previous programming experience. Only students in the Tech-Edge program are eligible to enroll in this course. (NUM) |
0.50 units, Lecture
|
CPSC 103 |
Concept to Prototype: Building through Iteration |
This course will introduce students to the foundational skills in prototyping, with a particular focus on cultivating customer empathy, establishing robust feedback loops, and gaining hands-on proficiency in diverse prototyping methods. Students will investigate the intricacies of prototype distinctions, from low to high fidelity, and will learn various techniques for virtual and physical execution. Through ideation and problem-solving, students will develop their ability to define problems based on user feedback, preparing them for real-world scenarios. The course uniquely integrates collaboration and support through a partnership with MakerspaceCT, providing hands-on prototyping experience in cutting-edge facilities. Culminating in a final project, students will showcase their iterative design journey, demonstrating the practical significance of prototyping in product development. (NUM) Prerequisite: A satisfactory score on the Mathematics Placement Examination or a C- or better in Quantitative Literacy 101 or QLIT 103 |
1.00 units, Studio
|
CPSC 110 |
Essentials of Computing with Python |
This course introduces fundamental concepts of computing and problem-solving techniques using the programming language Python. Topics covered include computer organization, data representations, algorithm design, coding, testing, and debugging strategies. Students will also explore various application areas of computing through a series of hands-on programming exercises. No prior programming experience is expected.
This course is not open to students who have completed CPSC 215L
This course is not open to students who have completed FYSM 124, Enchanted Data and Machine Minds (NUM) Prerequisite: A satisfactory score on the Mathematics Placement Examination or a C- or better in Quantitative Literacy 101 or QLIT 103 |
1.00 units, Lecture
|
CPSC 115 |
Introduction to Computer Science |
This course provides an introduction to computer science from broad and diverse perspectives, through object-oriented problem-solving using the Java programming language. Throughout the course, recurring themes are abstraction and effective use of basic algorithmic constructs such as sequence, selection and iteration. The building blocks of object-oriented programming such as encapsulation, inheritance, polymorphism and generics are covered and reinforced with practical applications. Required weekly laboratory sessions deepen students' learning with hands-on opportunities to experiment with the concepts covered in the lectures. (NUM) Prerequisite: C- or better in Computer Science 110 or mathematics skills appropriate for enrolling in a calculus class. |
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. (NUM) Prerequisite: C- or better in CPSC 115 or concurrent enrollment. |
1.00 units, Lecture
|
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. (NUM) 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. (NUM) Prerequisite: C- or better in Computer Science 115L and Computer Science 203 |
1.00 units, Lecture
|
CPSC 275 |
Introduction to Computer Systems |
This course introduces the fundamental organization and structure of modern computer systems from the perspective of a programmer. Students will become more effective programmers as they learn how computer systems compile, link, and execute programs, store information, and communicate. Topics covered will include data representations, computer arithmetic, low-level representations of programs, processor organization, the memory hierarchy and management, processes, and system-level I/O. A required weekly lab will involve a series of programming exercises related to these topics. (NUM) Prerequisite: C- or better in Computer Science 215. |
1.25 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. (NUM) Prerequisite: C- or better in Computer Science 215. |
1.00 units, Lecture
|
CPSC 310 |
Software Design |
Object-oriented paradigm for software analysis and design using an object-oriented programming language as a means to efficient, reliable, modular, and reusable code. Topics covered will include problem solving and design processes, design patterns, object-oriented principles and language-specific techniques, and tools for object-oriented modeling. (NUM) Prerequisite: C- or better in Computer Science 215. |
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. (NUM) Prerequisite: C- or better in Computer Science 215L, 275L and 203 (or concurrent enrollment in CPSC 203) |
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. (NUM) Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203). |
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 non-computability 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. (NUM) Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203). |
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. (NUM) Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203). |
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. (NUM) Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203). |
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. (NUM) Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203). |
1.00 units, Lecture
|
CPSC 360 |
Deep Learning |
The course will introduce the students to the fundamentals aspects of artificial neural networks (ANN), convolution neural networks (CNN), recurrent neural networks (RNNs), generative adversarial networks (GAN), and reinforcement learning. The focus will be primarily on the application of deep learning to realworld problems, with some introduction to mathematical foundations. Application of neural network frameworks to natural language processing (NLP), time series, computer vision, security, and data generation problems will be discussed. Python will be the primary programming language for this course. The students will work in teams towards a semester-long project using Google Tensorflow and Keras. (NUM) Prerequisite: C- or better in Computer Science 215. |
1.00 units, Lecture
|
CPSC 372 |
Database Fundamentals |
This course provides an introduction to the design and implementation of database systems. Topics include: the relational algebra and relational database models; SQL and other relational query languages; the implementation of database management systems, including indexing, concurrency control and transaction management. (NUM) Prerequisite: C- or better in Computer Science 215L and Computer Science 203 (or concurrent enrollment in 203). |
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. (NUM) Prerequisite: C- or better in Computer Science 215L, Computer Science 275L, and Mathematics 131. |
1.00 units, Lecture
|
CPSC 385 |
Computer Security |
Introduction to computer security, the practice of protecting information and computer systems from unauthorized actions. Topics covered in the course include information and computer security principles; basic adversarial models and threats; applied cryptography; network, software, operating system, and web security; real-world security protocols; policy, administration and auditing; and legal and ethical issues. Topics on privacy, anonymity, surveillance and a variety of modern, widely available tools for secure communication will also be discussed. (NUM) Prerequisite: C- or better in Computer Science 203, 215L and 275L |
1.00 units, Lecture
|
CPSC 395 |
Sensitive Information in a Connected World |
The increasing use of computers in business, government, recreation, and almost all aspects of daily life has led to a proliferation of sensitive data that is collected, stored, and used by today's ubiquitous information systems. Consequently, concern about the ownership, control, privacy, and accuracy of these data has become a top priority. This course will explore the powers and the limitations of the existing privacy-enhancing technologies with a focus on the technical challenges of handling sensitive information as well as the corresponding legal, social, economic, and policy issues. Special attention will be paid to the recent advances and new perspectives on research in privacy technologies. (NUM) Prerequisite: C- or better in Computer Science 215. |
1.00 units, Seminar
|
CPSC 399 |
Independent Study |
Independent work to develop maturity and initiative in the solution of a problem in the area of the student's special interests. This course may require concurrent registration in Computer Science 403 or 404. 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 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. (WEB) This course is open only to senior Computer Science majors. |
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. (WEB) This course is open only to senior Computer Science majors. |
0.50 units, Seminar
|
CPSC 415 |
Special Topics: Sensitive Information in a Connected World |
Increasing use of computers in business, government, recreation, and almost all aspects of daily life has led to a proliferation of sensitive data that is collected, stored, and used by today's ubiquitous information systems. Consequently, concern about the ownership, control, privacy, and accuracy of these data has become a top priority. This course will explore the powers and the limitations of the existing privacy-enhancing technologies with a focus on the technical challenges of handling sensitive information as well as the corresponding legal, social, economic, and policy issues. Special attention will be paid to the recent advances and new perspectives on research in privacy technologies. (NUM) Prerequisite: C- or better in Computer Science 203, 215L and 275L |
1.00 units, Lecture
|
CPSC 415 |
Special Topics: Data Visualization |
Data visualization is an essential skill required in today's data-driven world and helps us to use our perception to better understand the data. In the data visualization course, we will mainly focus on understanding and extending the current state of the art in data visualization, we will explore the process of data visualization that includes data modeling, data processing(such as aggregation and filtering), mapping between data and graphical attributes and use of several data visualization software and frameworks such as D3.js, seaborn, Power BI, and Tableau. (NUM) Prerequisite: C- or better in Computer Science 215. |
1.00 units, Lecture
|
CPSC 415 |
Special Topics: Building Cloud Native Applications |
Your applications will be running in the cloud with a variety of vendors offering commodity computing services. Understanding how to design and build applications for the cloud is significant in your computer science journey. We'll begin with understanding what cloud native means and the scope of topics in the ecosystem. Then, we'll dive into some specific tools and techniques for developing distributed applications. The hands-on labs will include building a modularized application using containers, microservices, and Kubernetes. Upon completion, you'll understand a breadth of key topics that demystify the development of applications for the cloud. (NUM) Prerequisite: C- or better in Computer Science 215. |
1.00 units, Lecture
|
CPSC 415 |
Special Topics: Large Scale and Open-Source Project Development |
Students will learn the fundamentals of contributing to and managing large software projects. Topics to be covered include theoretical and conceptual topics such as the open-source development model, specification, and design patterns as well as concrete skills such as using integrated development environments and source code repositories. All students will be required to contribute to an open-source, large-scale software project by participating in a Humanitarian Free and Open Source Software (HFOSS) project. (NUM) Prerequisite: C- or better in Computer Science 215. |
1.00 units, Lecture
|
CPSC 415 |
Special Topics: AI Integration |
Explore the integration of AI systems into software development, focusing on programmatic access to AI services. The course covers RESTful API interactions, local AI open-source models, and applications in chatbots, image generation, visualization, and audio/video creation. By blending theoretical foundations with implementation, the course equips students with the knowledge to leverage AI in modern software solutions. (NUM) Prerequisite: C- or better in Computer Science 215. |
1.00 units, Lecture
|
CPSC 415 |
Special Topics: Data Analytics |
A comprehensive introduction to data analytics, focusing on the essential techniques and tools used to analyze and interpret complex datasets. Students will learn how to collect, clean, and process data to extract meaningful insights and inform decision-making. The course covers various statistical methods, machine learning algorithms, visualization techniques, and data-focused programming. By the end of the course, students will have mastered a variety of tools and programming languages, enabling them to address real-world problems with data-driven solutions. (NUM) Prerequisite: C- or better in Computer Science 215. |
1.00 units, Lecture
|
CPSC 466 |
Teaching Assistantship |
Submission of the special registration form, available online, and the approval of the instructor are required for enrollment. Guidelines are available in the College Bulletin.
(0.5 - 1 course credit) |
0.50 units min / 1.00 units max, Independent Study
|
CPSC 490 |
Research Assistantship |
This course is designed to provide students with the opportunity to undertake substantial research work with a faculty member. Students need to complete a special registration form, available online. |
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 required for all senior computer science majors. Students 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 and the approval of the instructor and chairperson are required for each semester of this year-long project.(1 course credit to be completed in two semesters.) |
0.50 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 required for all senior computer science majors. Students 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 and the approval of the instructor and chairperson are required for each semester of this year-long project.(1 course credit to be completed in two semesters.) |
0.50 units, Independent Study
|