Introduction to Programming Fundamentals
Programming is one of the most rewarding activities you could become engaged in. It is one of the best things I have ever learned and I think that learning to program is for everyone. Before we dive in and discuss what this course is all about I want to encourage you to watch a video that I really enjoy.
This course will have a scheduled class time where I lecture and you listen but is designed to let you learn entirely on your own if you choose. I have prepared a number of lecture videos and documents for you to watch and read. These can take the place of lectures and should teach you everything you need to know to complete the homework assignments.
My reason for this model is that I want people to be able to learn at their own pace and not feel left behind if they miss class or held back if they are hungry for more. I want to have some face time with the students so I will make myself available on a weekly basis for anyone to come and ask me questions in person.
We are going to learn to program using the Python language. There are different environments that you can use to program in but the environment I recommend is a cloud environment called Cloud9. You will need to create a free account so that you will have an environment to program in. They will ask for a credit card when you sign up but you will not be charged unless you upgrade your account. Go ahead and click the link below to sign up.
This is a stand-alone course and you will not need to read a book to learn the material but I know that many people learn better from reading. I have, therefore, provided a book that I think is extensive and appropriate for the topics we will be learning. The book is free and has an online copy. Check it out at the link below.
You can also purchase a hard copy if you are more into that. Since I don't have a hard copy I will not be able to give page numbers. So you are on your own.
I will provide links to appropriate portions of the text as they apply. You may read them if you wish. It is often nice to learn from multiple sources so I encourage you to do so but it is not required. You will see links to the online text throughout this course that look like:
Programming is learned through experimentation and repetition. When talking to computers you must be very precise. Because we learn by doing I will encourage you to take breaks from the lessons to try out a few of the things that you are learning. I call these experiments and will prompt you with the following indicator:
Try it out!
The main purpose of this class is teach the basics of creating computer programs. It is not to teach about using computers. Basic computer knowledge is a pre-requisite for this class.
Lessons will be broken up into various principles. Completing a lesson will consist of watching the required videos and reading the lesson documentation for each principle and then completing the homework assignment(s).
The homework assignments will typically be programming assignments or question and answers. There is, of course, no grading associated with these assignments. I will be available on a weekly basis to discuss any problems you may experience with the lessons or the assignments. You will turn in the question and answer homework through email or GitHub but you will submit the programming assignments only through GitHub. You will, therefore, need a GitHub account. Click on the link below to setup an account.
I will not discuss how to use GitHub here because the first lesson covers that.
The syllabus for the class is simply the left-hand pane of this website. Each topic is assigned a lesson and there are questions and programming assignments at the end of each lesson.
I will be available weekly:
- Where: Pleasant Grove Library
- Day: Wednesday
- Time: 7:00 p.m. - 8:15 p.m.
The first hour will be regular instruction where I will go over topics from the course. The last 15 minutes (and longer if needed) I will answer questions so please come and get help. I am also available to answer questions by email. My email address is reedcwilson at gmail.com. You can also learn more about me at my website.