Welcome to Computer Science!
This course will be a very challenging and rewarding introduction to the basic ideas of Computer Science using the Python programming language. We will also explore some of the most important modern software development practices.
The ultimate goal of this course is to introduce students to Computer Science. As such, it is both more and less than a “programming course” or a “Python course”. It may be that some students go on to major in software development at a four-year college or other institution, and if so, this course should give them a head start toward a very rewarding (and lucrative!) professional career. More importantly, though, professionals in the modern workplace increasingly need to understand how software works, how it gets developed, what are its fundamental limitations, etc. In fact, more and more professionals from all disciplines are finding that they must actually write software in order to get their jobs done. This is analogous to the situation ~30 years ago, where more and more professionals were finding that they had to learn how to use a spreadsheet just to get their jobs done.
Warning! This Course is Still Under Construction
I’m doing my very best to develop content that’s appropriate for high school students with no programming experience, find the right pace, and decide how to assess student mastery of the learning objectives. I will certainly need to adjust my expectations and methodology as we progress though the semester, and I welcome student (and parent) input as I make such adjustments. Regardless, all students will be held to the following expectations unless/until I decide to modify those expectations, at which time all students will be held to the modified expectations.
Each class day will begin with a review of what we supposedly learned during the previous class. This will lead into an overview of the computer science concepts to be covered that day. Afterward, students will typically engage in computer-based activities for the remainder of the class period. Sometimes there will be several such activities, often with whole class discussion before or after each.
Most of the computer-base activities will be done using Codecademy on-line courseware, which supports a browser-based development environment. The subject material (including brief example code snippets) is presented in one area, more extensive example code is edited by the student in a second area, and console output from its execution appears in a third area. Each exercise expects the student to modify the example code to meet specific objectives, and after directed to execute the student code, the courseware automatically validates whether it meets those objectives. When the student code falls short, the courseware automatically attempts to provide constructive feedback.
(Click on the picture above to have a closer look)
Much of the Codecademy Python courseware will be custom-developed by Mr. Schneider (and this year’s students are essentially beta-testing his work). We will also make use of other Codecademy courseware developed by other authors (such as their standard Python track).
In addition, we will use other on-line courseware resources such as those developed by Code.org (the people who organize the extremely successful Hour of Code each year), Kahn Academy, MIT and others. Some of these activities will use visual programming languages like Scratch to introduce and generalize computer science topics.
Students may find the following resources useful as they struggle with the complexity of Python programming (more coming soon):
- Python in a Nutshell ($40; $32 for the eBook) – An excellent reference for the Python programming language. However, this is not an Introduction to Computer Science textbook. There is no expectation that students will purchase this text, however.
- Python Language & Syntax Cheat Sheet – A great one-page syntax reference for non-programmers from the Institute of Informatics at Ludwig Maximilian University of Munich. You could print this out and keep it handy while programming.
- The Python Tutorial – A very useful introduction to many Python language features with lots of great examples. This is a great place to look for a quick review, or to see a new concept presented from a different perspective.
- JetBrains PyCharm – This free (for the Community edition) downloadable Integrated Development Environment includes all the important IDE features (language-aware text editor, integrated debugger, etc.) PyCharm is already installed and configured on all lab computers, but if you’d like to work at home or on your laptop, then feel free to install PyCharm on it:
- First, you’ll need to install the Python 2.7 interpreter itself. The latest version (c. May 2015) is 2.7.9, but the one we’re using on the lab computers is 2.7.6, so that would be the safest bet. Remember the location on your computer’s hard drive where the interpreter got installed so that you can point PyCharm at it later.
IMPORTANT: Stay away from Python 3.x, because it won’t like the code we’ll be using in our PyCharm exercises!
- Next, download and install PyCharm. We’re using version 3.0.3 in the lab, but you should feel free to just install the latest community version. There might be a few differences in the names of menu items or preferences screens, but you’ll be able to figure it out.
- Once you’ve installed both the Python interpreter and PyCharm, you need to tell PyCharm to use the interpreter you installed.
- Finally, you should probably select Show line numbers in the Settings > Editor > General > Appearance panel (Preferences > Editor > General > Appearance panel on Mac OS X). I can’t imagine why this isn’t the default setting.
- PyCharm Help – The online documentation for PyCharm.
- Python Language Reference – A technical document that covers all the formal details of the language, but which unfortunately expects the reader to already be familiar with most Computer Science concepts.
- Each student will maintain a single GMail account, and must use this account for all class correspondence and to log into all courseware (where compatible) so that I can monitor student progress.
- The student’s GMail account must be configured to automatically display the student’s correct first and last names in all email correspondence.
- Each student will check his/her GMail account at least once each school day, and will respond to any requests from me that same day (unless some other deadline is specified).
- A student who is absent must take the responsibility for mastering the material covered in class that day, including all mandatory work. Check with a classmate to find out what went on while you were absent, go to the Classwork Schedule, and then plan to spend an extra 3 hours of your own time working your way through the material covered on each day you miss.
- I will circulate in the room to help students as they work through the on-line courseware, and there should be plenty of opportunities for students to get such help during each class period.
- Students are also encouraged to help one another with on-line coursework. However, (with the exception of special pair-programming exercises) students are prohibited from using each others’ keyboards. Sharing the answers to exercises also constitutes cheating and will be dealt with accordingly (see the School Handbook, Section 4.9). Instead, a mentor should only review concepts, clarify objectives, explain sample code and then help the pupil find and fix problems in the pupil’s own code.
- Each student must read all courseware content and complete all mandatory work. Any classwork not completed by the end of the period must be completed for homework. However, all expectations outlined above also apply to any work completed at home or during study period, particularly those related to mentoring.
- There will typically be open-ended activities available for students who complete the mandatory work for a class day before the end of the period. This time may also be used for productively mentoring other students (subject to the expectations above). However, all students are expected to remain on-task for the entire class period, every single day. Work on other courses is prohibited during Computer Science; use your Study Period instead.
- Students should not go on to the exercises for future class days unless specifically directed to do so.
- I am available for help during study periods and lunch, but only if you make an appointment first. If you have a question, you may also email it to me at CSchneider@BitneyPrep.net or call me at 470-8468.
How Grades are Computed
|A: 90% and above
B: 80% and above
C: 70% and above
D: 65% and above
F: below 65%