The following courses are offered every year - 1500 and 2200 are offered in the fall, 1600 and 2300 are offered in the spring, and we will offer 2170 each fall and spring semester.
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 is an introduction to techniques, ideas and problem-solving approaches that are used to develop some of these tools. At a high level, we focus on developing "computational thinking", which is the practice of using abstraction to design and implement algorithms and software to solve problems that arise in many different areas of our daily lives, such as networks, social media, and scientific computing, to name just a few.
At a practical level, students will design, implement, test and document their programs to learn introductory programming concepts, such as:
Most assignments in this course are programming assignments aimed to teach the students to express their ideas in efficient and elegant code; no prior programming experience is necessary to join and succeed in the course. Lecture periods are dedicated to introducing new material, discussions, individual and group activities and lab periods are used for programming practice. CMPS 1500 is the first course for Coordinate Major in Computer Science. It is usually offered in the fall term.
This is the second course in the introductory course sequence for Coordinate Major in Computer Science and is the continuation of CMPS 1500. While CMPS 1500 focuses on a broad array of topics in computer science and a single language (Python), this class focuses on several core topics in the design, analysis and implementation of computational tools that are drawn from the fields of data structures, software engineering, and programming languages:
CMPS 1500 or equivalent.
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 that students interested in pursuing further study in computer science take CMPS 2170 before, or concurrently with CMPS 1500 or CMPS 1600. (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 through theoretical study of classic solutions and hands-on programming assignments in C.
To understand the architecture and organization of modern operating systems, we will examine issues such as resource management and scheduling, memory management, multi-threading and concurrency, and file system organization. To understand distributed systems, we will examine topics such as protocol design, asynchronous and synchronous communication, and layered network architecture. Prerequisites: CMPS 1600 (Introduction to Computer Science II) or permission of the instructor.
CMPS 1600 or permission of the instructor
School of Science and Engineering, 201 Lindy Boggs Center, New Orleans, LA 70118 504-865-5764 firstname.lastname@example.org