Welcome to Berkeley High’s Intro to Programming class.

Intro

This website consists of a number of tools you'll use to do assignments for this class. We’ll go over getting set up in the first day or two of class but the main thing you need to do is sign up for a free GitHub account if you don’t already have one. (If you already have a GitHub account, it’s probably easiest to use that one for this class but if you’d rather create a new account for class that’s fine too.)

You will need a GitHub account to access all the tools on this page and to turn in your work but material like the class Slides are accessible without one.

End of year

For the last five weeks of the year, we will be focusing on coding, coding, coding. Read more about it here. When you are done with your fork for the year you should fork your repo so you’ll have a copy after I clean up the class repos over the summer.

Projects

In the Spring semester you will be spending more time on projects largely of your own choosing. I have made a list of potential projects that you can check out for ideas.

Help center

Another tool we’ll be using this year is BHS CS Classroom Help which we’ll use to coordinate getting help during class and also where you’ll keep a journal of your progress in this class.

Slides

These slides cover the material needed to do various problem sets below. Sometimes I will provide a lecture to go with the slides. Other times you will start by reading the slides yourself.

Fall

Spring

Review slides

These slides don't contain any new material but may provide a useful concise review of the most important bits from earlier slides.

Ad hoc slides

Various slides that I put together to discuss specific topics that aren't necessarily part of the curriculum.

Distilled review

For a distilled synopsis of what we've learned to date, look at this review.

Expression problem sets

As a warm-up before writing full programs, these problem sets are for practicing writing expressions that evaluate to certain values.

Assignments

These problem sets involve actually writing code. You can see answers to the older problem sets in this repo.

Old assessments

For your reference here are old assessments that we've already done. Multiple choice assessments should have a "Show answers" checkbox to see the correct answers. Code-based assessments should have correct example answers in this repo.

Refactoring

In the spring semester we are doing some work on "refactoring" code; making changes to the structure and organization of the code without changing it’s behavior. Check out these refactoring recipes for step by step instructions on doing a few important refactorings.

Using pull requests

After the expression and test case problem sets we will move to turning in assignments via GitHub pull requests as described here.

Playgrounds

These are various environments where you can write real programs. Each playground provides some kind of framework in which you can write your code without having to deal with too many lower-level details. Later on we will look under the hood at how these environments are defined.

Videos

I’ve made some videos to explain certain ideas, mostly about how to structure and simplify code. The full Youtube playlist is here. You’ll almost certainly want to watch the HD or 4K version so you can read the code on the screen.

Class calendar

I also have a tentative class calendar. Obviously as this is the first year of this course I expect that I’ll have to make adjustments along the way as I see how long different topics actually take. I’m also still working on this and probably will be up until the last day of school.

Standards

I used standards based grading which is a grading system where your grade is based entirely on your mastery of a number of standards. You should read these standards to understand what mastery of the material looks like. There is also more detail about the grading system works.

Class policies

Nothing too onerous and we’ll go over them in class but I do have a few classroom policies.

Games

Finally, some games. Don't expect wildly immersive game play but these will give you a quick way to make sure you have certain fundamental bits of knowledge solid.