IB HL / Software Engineering
Mr. Albinson (he/him) / Mr. Seibel (he/him)
I assume you’re here either because you really like CS.
Or you need another HL.
Or both.
We’ll get you ready for the HL IA and Exam.
I assume you’re here because you want to be a good programmer.
In the past this course has been almost entirely about programming.
It will still be a lot of programming but also some more about how computers work from the hardware to the operating systems.
Java review/crash course
Programming in Java
Not Java things
Projects
Java is quite a nice language with a rich and well-designed standard library.
The AP curriculum does its best to hide that fact.
Now we are free!
Syntactically similar (curly braces and semicolons).
Statically typed, which means we need to call our shots about what kind of values variables will hold. Javascript is more loosey-goosey.
Javascript runs in the browser. Java does not. (Javascript also runs not in the browser.)
A lot of Javascript these days is really Typescript which is Javascript plus static typing, so even closer to Java.
We’ll also be talking about how computers work, both because it’s part of the IB curriculum but also because it will help you better understand how a high-level language like Java works.
Also, it’s just cool.
AP CSA barely touched on how to actually design software of any complexity at all.
And it didn’t discuss several key elements of programming such what to do when bad things happen to good programs. (Exceptions in Java)
So we’ll talk about those things.
Modern software is usually built out of a lot of parts and only some of them are built in your main programming language.
We’ll take a look at databases and the Structured Query Language (SQL).
We’ll go deeper into how to use version control (git) than we did in CSA, especially when we do group projects.
The best way to learn to program is to actually program.
And it’s much more interesting to write programs that actually do things you care about.
This will require some creativity on your part.
A mix of somewhat constrained and totally open.
I encourage you to aim high but also to practice taking incremental steps that move you toward your ultimate vision.
This is one of the most important things to learn to do in programming.
“Dear Mr. Seibel, Thank you for being my Software Eng: Advanced Topics CS teacher this year. I learned so much about Java, but also about how terrible working with other people is!”
—Anonymous 2023-24 Software Eng student
Very little software is written by one person working alone.
Learning to work with other people is a crucially important skill.
Also, working with other people will really drive home some lessons about how to build good abstractions and write understandable code.
AI is extremely good at coding.
What does that mean for us puny humans?
Learning to program is still good for your brain.
In a world where there is an explosion of software due to AI, being able to understand what’s actually going on may be even more criticially important.
Some fraction of the knowledge and skills related to writing code that I’ve developed in 30+ years of programming is probably no longer necessary.
Some other fraction of the knowledge and skills I’ve devopled are what allow me to do amazing things with AI coding tools.
I still have very little idea how big each fraction is and what’s in each category.