Fundamentals of Programming and Computer Science Course ID 15112 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-122. Students seeking a more gentle introduction to computer science should consider first taking 15-110. NOTE: students must achieve a C or better in order to use this course to satisfy the pre-requisite for any subsequent Computer Science course. (GHC Clusters are the 3 labs on on Gates floor 5, 5207, 5208, and 5210) Key Topics Problem-Solving with Top-Down Design, Testing and Debugging, Python Language Constructs, Efficiency, Algorithm Analysis, Graphics and Animations, Object-Oriented Programming, Recursion Required Background Knowledge This is an intro level course in Python and computer science practices and topics for students with little to no computing background. Some backround in mathematics is helpful. Course Relevance Intro level course for students looking to learn about computer science with no previous background. However, the course is fairly rigorous so 15-110 may be a better option for those seeking a gentler introduction to computer science. Course Goals Develop computational problem-solving skills using Python. Produce clear, robust, and efficient code in Python exploiting top-down design and extensive function-level testing. Use OOP and recursion where appropriate. Describe the difference between programming and Computer Science, and gain exposure to some of the Big Ideas of Computer Science (e.g., Computability). Analyze the efficiency of algorithms. Design and implement event-based graphical animations. Develop and write a substantial (500-1500 line) program in Python for a term project. Learning Resources Piazza, Autolab, a plethora of (mostly free) optional textbooks and online readings for Python are linked to on the course website. Assessment Structure Homework (25%) made up of: collaborative checks (1%), collaborative labs (4%), solo homeworks (20%) Term Project (25%) Quizzes (10%) Midterm Exams (20%) Final Exam (20%) Course Link https://www.cs.cmu.edu/~112/