# Intro to Computer Science (ICS3U/C)

## Intro to Computer Science (ICS3U/C)

- [An Introduction to Computer Science](https://cs.brash.ca/master.md)
- [Videos & Slides](https://cs.brash.ca/videos.md): Videos and playlists about programming, computers, code, or algorithms. Most will be things I find, some will be things I make (eventually). If a link goes dead, just let me know.
- [The History of Computers](https://cs.brash.ca/unit-1/history.md): In order to know where we are headed, we need to know where we've come from! The history of the modern-day computer is actually quite interesting and students will discover it as a group.
- [Binary & Logic](https://cs.brash.ca/unit-1/binary-and-logic.md): Digital processors require electricity to work. But how do they make decisions or calculate something as simple as 2+2 or as complex as ray tracing in graphics?
- [Bits and Bytes (Binary)](https://cs.brash.ca/unit-1/binary-and-logic/bits-and-bytes-binary.md): Electricity can be on or off. That's it. So how do computers hold numbers?
- [Transistors (Changing Bits)](https://cs.brash.ca/unit-1/binary-and-logic/significance-of-switching.md)
- [Logic Gates](https://cs.brash.ca/unit-1/binary-and-logic/logic-gates.md)
- [Poster](https://cs.brash.ca/unit-1/binary-and-logic/logic-gates/poster.md): I designed the following poster for my classroom. You can contact me for a hi-res version, if you'd like to print it.
- [Logic.ly](https://cs.brash.ca/unit-1/binary-and-logic/logic-gates/logic.ly.md)
- [The Parts of a Computer](https://cs.brash.ca/unit-1/the-parts-of-a-computer.md): This page will be developed in the future... This whole site is a work in progress.  :)
- [How Do We Code?](https://cs.brash.ca/unit-2/how-do-we-code.md)
- [Coding Conventions (Rules)](https://cs.brash.ca/unit-2/how-do-we-code/coding.md)
- [Commenting Code](https://cs.brash.ca/unit-2/how-do-we-code/commenting-code.md): Possibly the most important part of any programming file!
- [What is HTML?](https://cs.brash.ca/unit-2/html.md): HTML is the language used to generate web pages. It is quickly becoming the front-end of mobile apps and most of what we see on a daily basis.
- [Hello World! (in HTML)](https://cs.brash.ca/unit-2/html/hello-world-sort-of.md): It's easy to find examples of the Hello World program all over the Internet. We're going to do our own in a slightly different way.
- [Hello World!](https://cs.brash.ca/unit-2/hello-world.md): The first program anyone ever writes.
- [Input / Output](https://cs.brash.ca/unit-2/input-output.md): Input from the user and output to the user are the basics of most computer programs. We call this Basic IO.
- [The Console](https://cs.brash.ca/unit-2/input-output/the-console.md)
- [Prompt, Alert, Confirm](https://cs.brash.ca/unit-2/input-output/prompt-alert-confirm.md): Javascript's Input/Output functions.
- [Variables & Data](https://cs.brash.ca/unit-2/variables.md): So, you've mastered the Hello World! program and you want to move forward? Excellent. Let's talk about storing and manipulating Data.
- [Strings (Text)](https://cs.brash.ca/unit-2/variables/strings.md): A lot of this applies to other languages but the syntax may be slightly different.
- [Numbers (Values)](https://cs.brash.ca/unit-2/variables/numbers.md): Math is the basis of computer science. We looked at strings first but that's only because we're used to typing words and sentences. Also, we learned about output. What about numeric variables?
- [Converting & Rounding](https://cs.brash.ca/unit-2/variables/numbers/converting-and-rounding.md): Because math requires rounding or remainder work, we have methods to round numbers, convert them, etc.
- [The Math Object](https://cs.brash.ca/unit-2/variables/numbers/the-math-object.md): Javascript (and some other languages) have built-in mathematics commands to simplify your life. In JS this is called the Math object.
- [Random Numbers](https://cs.brash.ca/unit-2/variables/numbers/the-math-object/random-numbers.md): Programming languages typically have a way of generating a random number. Some are simpler than others.
- [Booleans](https://cs.brash.ca/unit-2/variables/booleans.md): There are 10 kinds of people in the world: those who understand binary and those who do not.
- [Truthiness](https://cs.brash.ca/unit-2/variables/booleans/truthiness.md)
- [Arrays](https://cs.brash.ca/unit-2/variables/arrays.md): Arrays hold multiple values within one variable name.
- [Conditionals (if this, do that)](https://cs.brash.ca/unit-3/conditionals.md): In order to control the execution of code we need the ability to make decisions. We want to control the flow of our program.
- [If...Else](https://cs.brash.ca/unit-3/conditionals/ifelse.md): Do something based on a boolean expression.
- [Logical Operators](https://cs.brash.ca/unit-3/conditionals/ifelse/logical-operators.md): Using boolean logic inside if statements.
- [Switch / Case](https://cs.brash.ca/unit-3/conditionals/switch.md)
- [Loops (Repeating Code)](https://cs.brash.ca/unit-3/loops.md)
- [For...Loop](https://cs.brash.ca/unit-3/loops/for-loop.md): A count-controlled loop that runs for a certain number of iterations.
- [While & Do/While Loops](https://cs.brash.ca/unit-3/loops/while-loop.md)
- [Debugging](https://cs.brash.ca/unit-3/debugging.md): Content to come in the future...
- [Functional Programming](https://cs.brash.ca/unit-4/functional-programming.md)
- [User Defined Functions](https://cs.brash.ca/unit-4/user-defined-functions.md): Writing your own functions gives the ability to reuse code.
- [Hoisting and Scope](https://cs.brash.ca/unit-4/user-defined-functions/notes.md)
- [Calling a JS Function](https://cs.brash.ca/unit-4/calling-a-js-function.md): Interaction between HTML and Javascript requires a function to be called.
- [Programming Basics](https://cs.brash.ca/tl-dr/basics.md): Too Long; Didn't Read? I don't blame you. Here are the basics.
- [Slideshows & Demos](https://cs.brash.ca/tl-dr/slideshows-and-demos.md): < Under Construction > Please inform me of any broken links, incorrect information, or potential updates to my materials.
- [Javascript Syntax Poster](https://cs.brash.ca/tl-dr/javascript-syntax.md): I designed the following poster for the basics of Javascript.
- [Recursion](https://cs.brash.ca/advanced-topics/recursion.md)
- [Structures & Algorithms](https://cs.brash.ca/advanced-topics/structures-and-algorithms.md): High school computer science is a discovery of basic control flow, functions, and maybe OOP. Once you master those topics, there is so much more to learn!
- [Mmm... Pi](https://cs.brash.ca/advanced-topics/mmm...-pi.md): If you would like to get into some more advanced coding - perhaps interaction with hardware - a Raspberry Pi is a fantastic way to get started.
