Teacher: Fred Kral, Ph.D.
Email me: fkral
Call school: 415-339-9336
Get info: http://teach.kralsite.com
First-Semester Course Description
The course is divided into two semesters. Students take different paths during the second semester as described below.
Coding: Introduction (Fall semester)
This non-technical course is intended to be accessible to every student. It is increasingly important—and fun—to be able to program devices. As the first semester elective in computer science, this course presumes no prior knowledge and uses languages that are straightforward to new students. Throughout the sequence of electives, students gain more and more understanding of the seven big ideas of computer science: creativity, abstraction, data and information, algorithms, programming, the internet, and global impact. In this course, students build a foundation with the building blocks of procedural programming and they get a taste for object-oriented programming. For much of the course, the students learn interactively and get feedback from the graphics they control. They show their creativity in applications drawn from hands-on simulations, games, and animations. Students complete substantial projects. Some of their code runs through a web browser. In addition to programming, students learn about computer architecture, such as the internal components of a computer.
Text and Materials
Python:
• Matthes, Eric. Python Crash Course: A Hands-on, Project-based Introduction to Programming. San Francisco: No Starch Press, 2016. ISBN-13: 978-1-59327-603-4. Chapters 1–11. Highly recommended.
• Python Crash Course Cheat Sheets, https://ehmatthes.github.io/pcc/cheatsheets/README.html and Eric Matthes website, https://ehmatthes.github.io/pcc/. Required.
• Swaroop, C.H. (a.k.a. Swaroop Chitlur). A Byte of Python. Online textbook, http://python.swaroopch.com/. Download PDF, https://www.gitbook.com/book/swaroopch/byte-of-python/details. Recommended.
• Dawson, Michael. Python Programming for the Absolute Beginner, 3rd Edition. Boston: Cengage Learning, 2010. ISBN-13: 978-1-4354-5500-9. Optional.
• CodeHS, http://www.codehs.com. Intro to Computer Science in Python (Rainforest), online course. The foundational lessons called Introduction to Programming with Turtle Graphics are strongly recommended.
• Grok Learning, https://groklearning.com/. Introduction to Programming and Introduction to Programming 2, online courses. Recommended.
• Python.org, https://www.python.org.
Micro Python:
• Microbit.org
http://microbit.org/
Blockly:
• Code.org, http://www.code.org/. Hour of Code materials written in Blockly. Begin with Classic Maze and/or Minecraft Hour of Code, online courses. Strongly recommended.
General:
• Stackoverflow website, http://stackoverflow.com. High quality website with help.
Course materials:
• Laptop computer: a dependable, relatively recent, and reasonably fast computer. 4GB RAM or more is preferred. Should run Windows, OS X, or Linux. Required.
• 16 GB USB flash memory stick. Required.
• Pencil and paper.
Assessment
| Progress in work ("HW"): completing assignments. Assessed relative to each student's goal. | 5 points per assignment |
| Quantity of work: taking on work that goes further and deeper. Assessed relative to the full curriculum. | 50 points per semester |
| End-Semester Assessment: Final Project. | 20% of course grade |
| Participation: positive energy and interest level during in-class work including listening to others, contributing to discussion, completing assignments, working on projects, helping others, volunteering to research questions, and practicing during class. Assessed informally. | 20 points per week |
| Commitment to learning: Taking on what is challenging to you, getting help, communicating with the teacher, engaging with the material, and documenting work in an online notebook and in the computer code itself. Assessed informally. | 100 points per semester |
| Projects: quality, design, complexity, difficulty, originality, correctness, executability, code comments, and documentation. | 100 points per project, depending on size |
| Resourcefulness: developing self-reliance and independence by getting help in multiple ways including using textbooks, finding Internet help, looking at old code (from yourself or others), getting help from different students, forming a group of students, and asking the teacher for help. | 200 points per semester |
Class Policies
Class computer use policy
Personal and school computers shall be used for Computer Science only. Programming is tiring. It is tempting to engage in off-topic activities. Thus, from time to time, students may take breaks during which they shall not use any technology. The Marin School supports the responsible use of technology on our campus. Students who violate the school Technology Policy, as written in the Parent and Student Handbook, will be expelled from the classroom. This will lead to disciplinary consequences.
Late work policy and tardy policy
The teacher enters grades once per week on a weekday communicated to the students. Students get credit for late work up to that weekly deadline. Students who are late to class or leave the classroom for an extended time during class receive a maximum of 60% of the day's in-class work credit.
Collaboration policy
I encourage study groups. You may work with others (not just students) unless instructed otherwise as long as all of you contribute. Put the name of each contributor on an assignment to avoid issues with plagiarism. If you take a major piece of code from the Internet or a book, give it credit. Do not make significant pieces of code appear as your own work because that is plagiarism. Plagiarism is described in the Parent-Student Handbook.
Second-Semester Course Descriptions
After taking Coding: Introduction during the first semester students take either Coding: Computer Science or Coding Projects during the second semester. It will normally be clear after three months of the introductory course whether a student is ready to pursue the more rigorous computer science course.
Coding: Computer Science (Spring semester)
During the second semester of Coding, students delve into computer science and do their programming in a standard text-based language. Students continue to study the seven big ideas of computer science: creativity, abstraction, data and information, algorithms, programming, the internet, and global impact. Much of the course is spent programming, but the focus is on problem-solving techniques commonly used in computer science. Students continue to build their foundation with procedural programming (basic control structures, strings, file input/output, and arrays) and go on to write simple object-oriented programs. Throughout the semester students are introduced to object-oriented programming concepts and principles by adding and modifying code in hands-on simulations, games, and animations. The course is project driven and students are required to complete substantial programming projects. In addition to programming, students learn about computer architecture, such as how computers deal with data and instructions and the underlying computer logic. Prerequisite: Coding: Introduction and instructor recommendation.
Coding Projects (Spring semester)
Using the skills from their introductory programming course, students apply their knowledge to applications such as games, simulations, web development, graphics, and data processing. Students select major projects, take them through the design cycle, and present the results to their peers. Prerequisite: Coding: Introduction or Applied Computer Programming: Robotics.
Let's have a great year! Come visit or email! – Fred