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
- Programming 2022-08-15
- Numbers 2022-08-18
- Booleans 2022-08-19
- Strings 2022-08-24
- Expressions 2022-08-31
- Variables 2022-09-06
- Functions 2022-09-07
- Control constructs 2022-09-12
- For loop patterns 2022-09-28
- Arrays 2022-10-05
- Objects 2022-10-31
Spring
- Git 2023-01-03
- Spring cleaning 2023-01-03
- Codespaces 2023-01-04
- The Web 2023-01-04
- First web project 2023-01-04
- The Document Object Model 2023-01-16
- Cycle of life 2023-01-19
- DOM events 2023-01-24
- Functions redux (part 1) 2023-02-12
- Functions redux (part 2) 2023-02-20
- Refactoring example 2023-02-21
- Functions as values 2023-02-26
- Recursion 2023-04-10
- Recursion notes 2023-04-18
- Classes 2023-05-16
- Closures 2023-05-23
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.
- Strings distilled 2022-09-01
- Expressions distilled 2022-09-15
- Functions review 2022-09-21
- Function basics 2022-10-06
- Numeric review 2022-10-06
- Booleans review 2022-10-14
- Strings review 2022-10-14
- Control constructs and arrays review 2022-10-20
- Objects review 2022-11-09
Ad hoc slides
Various slides that I put together to discuss specific topics that aren't necessarily part of the curriculum.
- AMA 2022-08-18
- 2022-09-13 2022-09-13
- Back to school 2022-09-22
- Notes from first PRs 2022-09-23
- Object notes 2022-11-08
- Fall Final Exam 2022-12-15
- Phones 2023-01-10
- Starting web server 2023-01-25
- DOM 1 code 2023-01-31
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.
- Numbers 2022-08-17
- Arithmetic 2022-08-18
- Geometric 2022-08-18
- Boolean 2022-08-22
- More booleans 2022-08-23
- Strings 2022-08-24
Assignments
These problem sets involve actually writing code. You can see answers to the older problem sets in this repo.
- Number functions 2022-09-06
- Boolean birds 2022-09-07
- Pig Latin 2022-09-09
- Images challenge 2022-09-12
- Array functions 2022-10-11
- String functions 2022-10-27
- Object functions 2022-11-07
- Refactor Tic-Tac-Toe 2023-02-14
- HOF implementation 2023-02-26
- Array HOFs 2023-02-27
- Recursion 2023-04-10
- Recursion 2 2023-04-17
- Recursion 3 2023-04-19
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.
- Unit 1 cumulative assessment 2022-09-30
- Unit 1 numeric assessment 2022-10-07
- Unit 1 boolean and strings assessment 2022-10-17
- Unit 1 control constructs and arrays 2022-10-21
- 2022-10-31 strings 2022-10-31
- 2022-11-14 objects, arrays, and control constructs 2022-11-13
- 2022-11-29 numeric 2022-11-28
- 2022-12-02 booleans 2022-12-01
- 2022-12-05 strings 2022-12-04
- 2022-12-07 control constructs 2022-12-06
- 2022-12-08 cc multiple choice 2022-12-07
- 2022-12-08 control constructs 2022-12-07
- 2022-12-12 arrays and objects 2022-12-11
- 2022-12-16 fall semester final 2022-12-15
- 2023-02-24 refactoring 2023-02-23
- 2023-02-24 refactoring 2023-02-23
- 2023-03-08 higher order functions 2023-03-07
- 2023-03-27 higher order functions 2023-03-27
- 2023-04-21 recursion 2023-04-21
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.
- Play with a REPL
- Bouncing ball
- Simple draw
- Simple animation
- Image expressions
- Number function practice
- Tic-Tac-Toe
- Chess board
- Game of life
- Sudoku
- Advent of Code
- 2048
- Maze solver
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.
- Quick boolean simplification demonstration 11:47
- Sudoku simplification 42:54
- Tic Tac Toe simplification 33:24
- How to use “Change All Occurrences” 5:07
- Tic Tac Toe full development 1:45:24
- Another Tic Tac Toe simplification 1:22:13
- Sudoku drawing simplification 38:42
- Collisions simplification 22:57
- Caesar cipher UI 30:03
- Tic Tac Toe Refactoring 47:21
- Snowman refactoring 25:01
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.