CMPS 1500 Introduction to Computer Science I
Introduction to Computer Science I
Computational tools are a critical part of our everyday lives. Software is the driving force behind cutting edge scientific discovery, blockbuster entertainment, and today's fast-paced marketplace.
This course aims to be an introduction to techniques and problem-solving approaches that are used to develop some of these tools. At a high level,
we will focus on what has recently been called "computational thinking"
which is the practice of using abstraction to design and implement algorithms and software to solve problems. A key focus of this course will be to show that computational tasks and
their solutions arise in many different aspects of our daily lives. We will learn basic programming principles
as well as applications of computational tools. Python will be the language we will use to explore the following basic programming concepts: Data structures such as lists, vectors,
dictionaries,trees; Iteration and recursion; Performance analysis via profiling and timing. We will also see how these elementary concepts are used in a number of
application areas such as embedded systems, networks, social media, and scientific computing to name just a few. CMPS 1500 is usually offered in the fall term.
Notes: Should be taken with CMPS 2170
credit hours: 4
Introduction to Computer Science I
CMPS 1600 Introduction to Computer Science II
Introduction to Computer Science II
This is a continuation of CMPS 1500. The course covers programming in a range of programming languages, from functional to object-oriented to imperative. The course demonstrates how to use various languages to solve problems that arise from real-world" applications presented as modules. Students will learn how different languages solve problems in different ways and which language constructs are most appropriate to solve which problems. The course requires programming in several languages including Scheme Java and C. Programming exercises will include designing a web-based API how to model epidemics.
Notes: CMPS 1600 is usually offered in the spring term.
credit hours: 4
Introduction to Computer Science II
CMPS 2170 Discrete Mathematics
Discrete Mathematics
This course is an introduction to several areas of mathematics that are particularly useful in computer science. The topics include an introduction to predicate and propositional logic, mathematical induction, combinatorics and counting, and discrete probability theory. We recommend students take this at the same time they take CMPS 1500.
Pre-requistites: One semester of Calculus or permission of instructor.
credit hours: 3
Discrete Mathematics
CMPS 2200 Introduction to Algorithms
Introduction to Algorithms
This course is an introduction to the design and analysis of algorithms, and covers several basic algorithmic paradigms and their application to core computational problems in graph theory and optimization, as well as analysis of time and space complexity. The primary focus of the course will be on understanding the divide-and-conquer, greedy and dynamic programming paradigms for algorithm design as well as the problem areas to which they can be applied. Example application areas include graph theory, discrete optimization, numeric and scientific computing and machine learning.
Pre-requistites: CMPS 1600, CMPS/MATH 2170.
credit hours: 3
Introduction to Algorithms
CMPS 2300 Introduction to Computer Systems and Networking
Introduction to Computer Systems and Networking
Modern computer systems must take advantage not only of the latest hardware technology, but also of the ability to compute and communicate over a network. The primary focus of this course will be to understand the principles behind the design of modern operating systems and distributed systems. To understand the architecture and organization of modern operating systems, we will examine issues such as resource management and scheduling, security, multi-threading and concurrency, and file system organization. To understand distributed systems, we will examine topics such as protocol design, asynchronous and synchronous communication, coordinated and cloud computing, and network security.
Pre-requistites: CMPS 1500
credit hours: 3
Introduction to Computer Systems and Networking
CMPS 3110 Introduction to Computational Biology and Bioinformatics
Introduction to Computational Biology and Bioinformatics
This course gives an overview of numerous fundamental areas in computational biology: computational sequence analysis, sequencing technologies and algorithms, protein structure prediction and determination, systems biology and phylogenetic analysis. These areas are covered with a focus on understanding why and how engineering and computational methods are applied to real-world biological questions.
Pre-requistites: CMPS 1600, CMPS 2200.
credit hours: 3
Introduction to Computational Biology and Bioinformatics
CMPS 3120 Special Topics
Special Topics
This course varies from time to time, focusing on topics of interest to the faculty and students.
Pre-requistites: Permission of the instructor.
credit hours: 3
Special Topics
CMPS 3130 Introduction to Computational Geometry
Introduction to Computational Geometry
This course provides an introduction to geometric algorithms and geometric data structures. Computational Geometry is a young discipline which enjoys close relations to mathematics and to various application areas such as geometric databases, molecular biology, sensor networks, visualization, geographic information systems (GIS), VLSI, robotics, computer graphics and geometric modeling. Covered topics include fundamental geometric algorithm design and analysis paradigms, geometric data structures for planar subdivisions and range searching, algorithms to computer the convex hull, Voronoi diagrams, and Delaunay triangulation, as well as selected advanced topics.
Pre-requistites: CMPS 2200 or permission of the instructor.
credit hours: 3
Introduction to Computational Geometry
CMPS 3140/6140 Introduction to Artificial Intelligence
Introduction to Artificial Intelligence
The aim of this course is to provide the student with an introduction to the main concepts and techniques playing a key role in the modern arena of artificial intelligence. In addition to covering the main topics that concern modern AI, particular attention will be devoted to its applications in several fields. Among the topics covered are, What is an intelligent artificial agent?" problem solving using search and constraint satisfaction uncertainty Bayesian networks and probabilistic inference supervised learning sequential decision problems.
credit hours: 3
Introduction to Artificial Intelligence
CMPS 3210 Algorithms for Computational Structural Biology
Algorithms for Computational Structural Biology
Over the last few decades, as we have been able to determine whole genome sequences, structural biologists have sought to determine and catalog protein structures with an increasing reliance on computational methods. Automated methods to analyze protein structure make it possible to leverage information from previously solved structures, and to interpret experimental data in a principled way. In this course, we will focus on the myriad of algorithms for analyzing numerous aspects of protein structure and protein-protein interactions.
Pre-requistites: CMPS 1600, CMPS 2200.
credit hours: 3
Algorithms for Computational Structural Biology
CMPS 3240/6240 Introduction to Machine Learnings
Introduction to Machine Learnings
This course provides an introduction to the fundamental concepts of machine learning and statistical pattern recognition. In addition, several examples of applications will be described. The topics covered include generative/discriminative and parametric/non-parametric supervised learning, including neural networks; unsupervised learning, including clustering, dimensionality reduction and kernel methods; learning theory, including tradeoffs, large margins and VC theory; reinforcement learning, including criteria for optimality, brute force methods, value function methods and direct policy search; feedforward/feedback adaptive control, direct/indirect adaptive control methods; and various applications.
Pre-requistites: CMPS 1500, CMPS/MATH 2170.
credit hours: 3
Introduction to Machine Learnings
CMPS 3250/6250 Theory of Computation
Theory of Computation
This course is an introduction to the theory of computation. It begins with regular languages and their representation as finite state automata, and continues with context free languages and pushdown automata. Turing machines and the Church-Turing Thesis are also considered, as well as decidability and reducibility. The basic notions of complexity theory area also covered, including P and NP for time complexity, as well as basic results about space complexity.
Pre-requistites: CMPS/MATH 2170 or equivalent.
credit hours: 3
Theory of Computation
CMPS 3260/6260 Algorithms and Complexity
Algorithms and Complexity
This course is an introduction to the theory of computation. It begins with regular languages and their representation as finite state automata, and continues with context free languages and pushdown automata. Turing machines and the Church-Turing Thesis are also considered, as well as decidability and reducibility. The basic notions of complexity theory area also covered, including P and NP for time complexity, as well as basic results about space complexity.
Pre-requistites: CMPS/MATH 2170 or equivalent.
credit hours: 3
Algorithms and Complexity
CMPS 3280/6280 Information Theory
Information Theory
This course is an introduction to Shannon's mathematical theory of information. It considers basic concepts such as information content, entropy and the Kullback-Leibler distance, as well as areas such as data compression and Shannon's Source Coding Theorem, coding, prefix codes, lossless channels and their capacity, and Shannon's Noisy Coding Theorem. Applications to various areas are also featured in the course.
Pre-requistites: MATH 3050 or 3090 and familiarity with discrete probability or permission of instructor.
credit hours: 3
Information Theory
CMPS 3300/6300 Software Studio
Software Studio
This is a course on fundamentals of software development and software engineering. Working in teams, students apply a recognized software engineering methodology, a modern programming language and software development tools (including an IDE, debugger, version control system, and testing framework) to design and implement a semester-long project – a software solution for a real-world problem. In addition to code for the team project and individual homework assignments, students prepare written reports and deliver presentations. Major non-coding assignments include a requirements specification and feasibility analysis document, a technical manual and a user's manual for the final version of the product, presentations of the design versions and implementations, and a public presentation of the final product and design process.
Pre-requistites: CMPS 1600, CMPS 2200 or approval of instructor.
credit hours: 3
Software Studio
CMPS 3310/6310 Logic in Computer Science
Logic in Computer Science
This course is an introduction to logic and its applications in computer science. The topics covered include soundness and completeness of propositional logic, predicate logic, linear time temporal logic and branching time temporal logics and their expressive power, frameworks for software verification, Hoare triples, partial and total correctness, modal logics and agents, and binary decision diagrams.
Pre-requistites: CMPS 2200 or equivalent and CMPS 2170 or equivalent or permission of instructor.
credit hours: 3
Logic in Computer Science
CMPS 4010 Capstone Project Part 1 of 2
Capstone Project Part 1 of 2
This is the first semester of a two-semester course devoted to the development of the student's capstone project, which is required for the Computer Science coordinate major. Each student is overseen by a faculty advisor in computer science, in coordination with a faculty advisor from the area in which the project aims to demonstrate the application of computer science to that discipline. No credit is given for this course alone; credit of 3 hours is given for the combined courses CMPS 4010 and 4020.
Pre-requistites: Approval of the department.
credit hours: 0
Capstone Project Part 1 of 2
CMPS 4020 Capstone Project Part 2 of 2
Capstone Project Part 2 of 2
This is the second of a two-semester course devoted to the development of the student's capstone project, which is required for the Computer Science coordinate major. Each student is overseen by a faculty advisor in computer science, in coordination with a faculty advisor from the area in which the project aims to demonstrate the application of computer science to that discipline.
Pre-requistites: Approval of the department.
credit hours: 3
Capstone Project Part 2 of 2
CMPS 4150/6150 Advanced Topics of Artificial Intelligence
Advanced Topics of Artificial Intelligence
This course will cover advanced topics in artificial intelligence. The topic will be announced at the start of each semester.
Pre-requistites: Approval of the department.
credit hours: 3
Advanced Topics of Artificial Intelligence
CMPS 4230 Advanced Computational Geometry
Advanced Computational Geometry
This course covers a selection of advanced geometric algorithms and geometric data structures, and their application to other disciplines. Selected topics may include: Dynamic and kinetic data structures, geometric algorithms and data structures in higher dimensions, shape analysis and matching, robustness and implementation issues, geometric approximation algorithms. Applications to disciplines such as geometric databases, molecular biology, sensor networks, visualization, geographic information systems (GIS), VLSI, robotics, computer graphics, and geometric modeling will be discussed.
Pre-requistites: CMPS 3130/6130 or permission of instructor.
credit hours: 3
Advanced Computational Geometry
CMPS 4250/6250 Mathematical Foundations of Computer Security
Mathematical Foundations of Computer Security
This course studies the mathematics underlying computer security, including both public key and symmetric key cryptography, crypto-protocols and information flow. The course includes a study of the RSA encryption scheme, stream and clock ciphers, digital signatures and authentication. It also considers semantic security and analysis of secure information flow.
Pre-requistites: One semester of Calculus, CMPS/MATH 2170, and permission of instructor.
credit hours: 3
Mathematical Foundations of Computer Security
CMPS 4910/6910/4920 Independent Study in Computer Science
Independent Study in Computer Science
This is a directed study course that allows a student to pursue a topic of particular interest under the direction of a computer science faculty member. No more than three hours of 4910-4920 may be counted toward satisfying the major requirements.
Pre-requistites: Approval of the department.
credit hours: 3
Independent Study in Computer Science
CMPS 4920 Independent Study in Computer Science
Independent Study in Computer Science
This is a directed study course that allows a student to pursue a topic of particular interest under the direction of a computer science faculty member. No more than three hours of 4910-4920 may be counted toward satisfying the major requirements.
Pre-requistites: Approval of the department.
credit hours: 3
Independent Study in Computer Science
CMPS 4990 Honors Thesis in Computer Science
Honors Thesis in Computer Science
Pre-requistites: Approval of the department.
credit hours: 3
Honors Thesis in Computer Science
CMPS 5000 Honors Thesis in Computer Science
Honors Thesis in Computer Science
Pre-requistites: Approval of the department.
credit hours: 3
Honors Thesis in Computer Science
CMPS 6120 Special Topics
Special Topics
This course varies from time to time, focusing on topics of interest to the faculty and students.
Pre-requistites: Permission of the instructor.
credit hours: 3
Special Topics
CMPS 6130 Introduction to Computational Geometry
Introduction to Computational Geometry
This course provides an introduction to geometric algorithms and geometric data structures. Computational Geometry is a young discipline which enjoys close relations to mathematics and to various application areas such as geometric databases, molecular biology, sensor networks, visualization, geographic information systems (GIS), VLSI, robotics, computer graphics and geometric modeling. Covered topics include fundamental geometric algorithm design and analysis paradigms, geometric data structures for planar subdivisions and range searching, algorithms to computer the convex hull, Voronoi diagrams, and Delaunay triangulation, as well as selected advanced topics.
Pre-requistites: CMPS 2200 or permission of the instructor.
credit hours: 3
Introduction to Computational Geometry
CMPS 6210 Algorithms for Computational Structural Biology
Algorithms for Computational Structural Biology
Over the last few decades, as we have been able to determine whole genome sequences, structural biologists have sought to determine and catalog protein structures with an increasing reliance on computational methods. Automated methods to analyze protein structure make it possible to leverage information from previously solved structures, and to interpret experimental data in a principled way. In this course, we will focus on the myriad of algorithms for analyzing numerous aspects of protein structure and protein-protein interactions.
Pre-requistites: CMPS 1600, CMPS 2200.
credit hours: 3
Algorithms for Computational Structural Biology
CMPS 6230 Advanced Computational Geometry
Advanced Computational Geometry
This course covers a selection of advanced geometric algorithms and geometric data structures, and their application to other disciplines. Selected topics may include: Dynamic and kinetic data structures, geometric algorithms and data structures in higher dimensions, shape analysis and matching, robustness and implementation issues, geometric approximation algorithms. Applications to disciplines such as geometric databases, molecular biology, sensor networks, visualization, geographic information systems (GIS), VLSI, robotics, computer graphics, and geometric modeling will be discussed.
Pre-requistites: CMPS 3130/6130 or permission of instructor.
credit hours: 3
Advanced Computational Geometry
CMPS 6250 Mathematical Foundations of Computer Security
Mathematical Foundations of Computer Security
This course studies the mathematics underlying computer security, including both public key and symmetric key cryptography, crypto-protocols and information flow. The course includes a study of the RSA encryption scheme, stream and clock ciphers, digital signatures and authentication. It also considers semantic security and analysis of secure information flow.
Pre-requistites: One semester of Calculus, CMPS/MATH 2170, and permission of instructor.
credit hours: 3
Mathematical Foundations of Computer Security
CMPS 6280 Information Theory
Information Theory
This course is an introduction to Shannon's mathematical theory of information. It considers basic concepts such as information content, entropy and the Kullback-Leibler distance, as well as areas such as data compression and Shannon's Source Coding Theorem, coding, prefix codes, lossless channels and their capacity, and Shannon's Noisy Coding Theorem. Applications to various areas are also featured in the course.
Pre-requistites: MATH 3050 or 3090 and familiarity with discrete probability or permission of instructor.
credit hours: 3
Information Theory
CMPS 7980 Independent Study in Computer Science
Independent Study in Computer Science
This is a directed study course that allows a graduate student to pursue a topic of particular interest under the direction of a computer science faculty member
Pre-requistites: Approval of the department.
credit hours: 3
Independent Study in Computer Science
|