The following courses are offered every year - 1500, 2170 and 2200 are offered in the fall, and 1600 and 2300 are offered in the spring.
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 shall use to explore the following basic programming concepts:
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.
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, a spam filter, how to model epidemics, how to model and analyze networks, and how to design a cryptographic protocol.
CMPS 1500 or equivalent.
CMPS 1600 is usually offered in the spring term.
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. (Same as MATH 2170)
MATH 1220 or MATH 1310 or permission of instructor.
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.
CMPS 1600, CMPS/MATH 2170.
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.
CMPS 1600, CMPS/MATH 2170.
School of Science and Engineering, 201 Lindy Boggs Center, New Orleans, LA 70118 504-865-5764 email@example.com