Class 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.
The course has two centrail aims. Upcon completion of this course,
students will be able to:
Aim 1: Develop computational solutions to problems:
- Break a computational problem into manageable subproblems.
- Write an algorithm to solve a specific problem, and then translate that algorithm into a program in a specific programming language (Python).
- Reason about a solution’s performance and measure its efficiency.
- Write clear, concise documentation for their code and develop tests to verify proper program operation.
Aim 2: Explore the breadth of Computer Science as a discipline and how it exists in the world:
- Reason how computational tools, and computational thinking, are used to solve problems in a diverse set of application areas.
- Explain the basic theory and organization of a computer system, basic operation of modern software tools (e.g., operating systems, social media tools, embedded operating systems), and limits of computation.
Class webpage:
http://www.cs.tulane.edu/~carola/teaching/cmps1500/spring19
Time & Place:
Lectures: MWF 2pm - 2:50pm, ST 302
Lab, Section 1: R 8am - 9:15am, ST 302
Lab, Section 2: R 3:30pm - 4:45pm, GI 325
Textbook:
We will be using the online interactive learning environment
Zybook, which is both a textbook and a programming environment.
Please see the
introductory information
for instructions on how to sign up for Zybook, and how to get started with the class.
Instructor:
Carola Wenk
Stanley Thomas, 303F
E-mail: cwenk -at- tulane -dot- edu
Phone: 504-865-5805
Office hours: M 12pm-1pm, F 3pm-4pm, and by appointment
Please see the help schedule for the
office hours the instructor and of all TAs.
Teaching Assistants:
Erfan Hosseini (lab instructor)
E-mail: shosseinisereshgi -at- tulane -dot- edu
Conrad Leonik
E-mail: cleonik -at- tulane -dot- edu
Last modified by Carola Wenk,
cwenk -at- tulane -dot- edu,