Computer Science 12

Some info on CS 12 - Ministry page 

Every programmer should have a decent understanding of how the shell works and some of the tools that are useful when working in the shell. Please complete (or possibly redo) the following two very short courses. You'll need to sign up for a Udacity account. You can either sign up with your Google or Facebook account or create one using your email address. 

In order to practice using the shell commands I would like you to create a free beginner account on PythonAnywhere. Note that not all commands are available in any given shell.

An alternative web-based shell can be accessed on this page.

Finally, please complete the following two short tutorials on shell scripting.

Regular Expressions ('regex')

At the end of the Shell Workshop the instructor mentions regular expressions. These are a way to do pattern matching. It's a very important topic if you are ever going to write software that deals with text (which is often!). 

Try the first 10 lessons of this tutorial to get an idea of how powerful regular expressions can be. This is a topic you'll revisit in 1st year computer science, if you take it. The better your understanding of the topic now the better you'll do in the university course as the questions can get very tricky.

There are many YouTube videos offering tutorials and explanations if you prefer to learn that way. Keep in mind that it's pretty big topic. The Princeton University Regular Expressions tutorial runs to 197 pages!

Almost every programming language has a way to implement regular expressions and there are slight differences. These are referred to as 'flavours'. You can experiment on this page to see if you can spot any of the differences.

Finally, please work through the following tutorial on uses of Regular Expressions.


I'd like you to do the course Data Structures & Algorithms in Python on Udacity. The course uses Python 2, but there is very little difference between Python 2 and Python 3. Since there is still a lot of code written in Python 2 it's not such a bad idea to be familiar with the differences. However, if you are coding something from scratch you should use Python 3.

If you need a refresher in Python you can refer to the Colab Notebooks on my Colab page.

There are many good resources online to help you learn about algorithms. The following are university level books, in particular the first one. (The third author of the first book, Ronald Rivest, is the 'R' in the RSA algorithm, the algorithm that is the basis for encryption on the internet.)

Here are links to PDFs of those books:

If you prefer courseware here are a few options to continue your studies:

Machine Learning

You've probably read and heard a lot about artificial intelligence and machine learning. In this unit you'll learn the basics of what machine learning is and get to the point of building your own machine learning models. There's a lot of material that I'd like you to look at, but I think you'll find it very interesting.

First, please watch Andrew Ng's non-technical introduction to machine learning on Coursera.

Next, please watch the first three videos in this playlist. The total is about 22 minutes. Watch more of the videos in this playlist if you find the topic interesting (there are 62 in total!).

Then, from Amazon's excellent Machine Learning University (MLU), please read:

If you liked those two interactive articles there are more here. You may also find Amazon's Machine Learning University channel on YouTube a useful resource.

Then, please watch the first eight videos in this playlist. The total is less than an hour. Here's a Colab notebook that goes along with the second video.

You might find the following tutorials helpful:

If you finish and are keen to learn more, consider exploring more tutorials on the Kaggle site.

I will post an assignment on Teams that will require you to put to use some of the skills you've acquired.