shadow_tr

Freshman & Sophomore Level Courses

Computer Science Courses

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.

Top ⇑CMPS 1500 – Introduction to Computer Science I

Course Description

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:

  • 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.

Prerequisite

None.

Introduction to Computer Science I »


Top ⇑CMPS 1600 – Introduction to Computer Science II

Course Description

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.

Prerequisite

CMPS 1500 or equivalent.

Course Contents

  • Scheme and functional programming
  • Abstract Data Types versus data structures
  • High-level versus low-level functional programming
  • Java and Object-oriented programming
  • Classes, objects and methods
  • C and Imperative programming
  • Turing machines and Finite State Automata
  • Application areas such as: a web-based calculator, a spam filter, modeling epidemics and computational science, networking, and cryptography.

CMPS 1600 is usually offered in the spring term.

Introduction to Computer Science II »


Top ⇑CMPS 2170 – Discrete Mathematics

Course Description

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)

Prerequisite

One semester of Calculus or permission of instructor

Course Contents

  • Propositional and predicate logic
  • Mathematical Induction and Recursion
  • Combinatorics: counting, permutations and combinations
  • Discrete Probability and Bayes Theorem

Top ⇑CMPS 2200 – Introduction to Algorithms

Course Description

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.

Prerequisite

CMPS 1600, CMPS/MATH 2170.

Course Contents

  • Asymptotic Analysis and Big-O Notation
  • Divide-and-Conquer Algorithms
  • Recurrences and The Master Method
  • Greedy Algorithms
  • Graph Algorithms (Breadth-First Search, Depth-First Search, Connectivity and Shortest Paths)
  • Dynamic Programming
  • Linear Programming
  • Lower Bounds and Computational Complexity

Introduction to Algorithms »


Top ⇑CMPS 2300 – Introduction to Computer Systems

Course Description

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.

Prerequisite

CMPS 1500

Course Contents

  • Uniprocessor Systems:
    • Memory management
    • Filesystems and Virtual Memory
    • Security and Application and OS Layers
    • Synchronization and Concurrency
    • Scheduling, Multitasking and Multithreading
  • Multiprocessor, Networked and Distributed Systems:
    • Operating systems and multi-core architectures
    • Communication protocols and TCP/IP
    • Asynchronous and Synchronous communication and protocols
    • Scalability and management of distributed computing systems
    • Cloud Computing using MapReduce, Hadoop and Amazon EC2
    • Network security

School of Science and Engineering, 201 Lindy Boggs Center, New Orleans, LA 70118 504-865-5764 sse@tulane.edu