Introduction to Programming
This course is offered as a gentle, eight week introduction to the art of computer programming. We will be using How to Think Like a Computer Scientist: Learning with Python as our (freely available) text. It will be taught in a combined lecture/problem section format: we'll have a short lecture on a given topic, then use what we learned about that topic to solve problems together. It presumes no previous experience.
Student expectations:
Personal: Students need not have any previous experience in computer science. They need not even consider themselves "computer people". Only some curiousity about how computers work and enjoyment of puzzle-solving are required to benefit from this course. Practically speaking, that means getting our fingers dirty by writing a lot of code. Programming is a very young field, and one consequence is that we don't know very much about how best to teach it. One thing we do know, though, is that we learn best (or much better, at least) by doing a little bit every day. There will be a problem set each week, which we'll begin in class and finish on our own. Students will be expected to give these a shot, and to ask for help when they get stuck.
Technological: Students will need access to a computer with, or on which they can install, Python. Python is freely available, and installation will be covered on or before the first class. Internet access will also be very helpful. Students without access to a computer are encouraged to contact me personally to see if we can work something out: several facilities in Baltimore provide access to computers, and perhaps arrangements can be made.
Below is the tentative schedule:
Week 1: Introductory remarks and technological overhead issues. Students will be able to explain the concepts of variables, assignment, expressions and statements, and use them to write Hello, World!-like programs. Chapters 1 and 2 in HTTLACS.
Week 2: Functions. Students will be able to identify thesignature and type of a function, understand the importance offunctions in clear programming style, and write their own. Chapters 3, 5.
Week 3: Conditionals. Students will be able to use boolean expressions and if-else constructions to alter control flow in their programs. Chapter 4.
Week 4: Iteration, catch-up. Students will be able to use the for and while constructions to alter control flow in their programs. Review, reinforcementof previous material. Chapter 6.
Week 5: Strings. Students will become familiar with string processing techniques, and will be able to write programs manipulating strings using the for construction. Chapter 7.
Week 6: Lists. Students will create instances of compound data types and write programs employing their knowledge of control flow constructs to manipulate them. Discussion of final project topics. Chapter 8.
Week 7: Recursion. Students will explore recursive problem-solving strategies and write recursive functions to perform computations on non-nested data structures. Chapter 9.
Week 8: Final Projects. Students will demonstrate their final projects and review their code with the class.
Please contact Patrick at synapse.and.syntax@gmail.com or visit groups.google.com/group/bfsprogramming for more information.