Description |
A technical introduction to the fundamentals of programming with an emphasis
on producing clear, robust, and reasonably efficient code using top-down
design, informal analysis, and effective testing and debugging. Starting
from first principles, we will cover a large subset of the Python
programming language, including its standard libraries and programming
paradigms. We will also target numerous deployment scenarios, including
standalone programs, shell scripts, and web-based applications. This course
assumes no prior programming experience. Even so, it is a fast-paced and
rigorous preparation for 15-121 or 15-122. Students seeking a more gentle introduction
to computer science should consider first taking 15-110.
|
Learning Objectives |
- Develop computational problem-solving skills using Python as a tool to be applied to new problems, especially in the student's home academic discipline
- Produce clear, robust, and efficient code in Python by
- employing modular, top-down design
- using sequential, conditional, and loop statements where appropriate
- using strings, lists, tuples, and dictionaries where appropriate
- using objects and classes where appropriate
- integrating recursive functions where appropriate
- proactively designing and writing test cases to effectively test and debug code
- Develop an effective programming style based on established standards, practices, and guidelines
- Describe the difference between programming and Computer Science, and gain exposure to some of the Big Ideas of Computer Science (e.g., Computability)
- Explain and analyze the efficiency of algorithms by:
- proving the running time (Big-O) of various well-known searching and sorting algorithms
- determining (not proving) the running time (Big-O) of a small piece of code
- describing the difference between small code optimizations and more substantive algorithmic optimizations
- Design and implement event-based graphical animations
- Develop and write a substantial (500-1500 line) program in Python to implement a solution to a term project of their choosing over two weeks
|