## How many go to university? How many into CS/SE?
The education "system" converted only 4.2% of the 20 to 24 cohort into STEM university credentialed workers.
![stem degrees](art/stem table/stem table.png)
## Better argument against so much rigour: Cognitive Linguistics
- cognitive linguistics research (amongst others) have shown the importance of basing language learning on non-symbolic (e.g. embodied) conceptualization development [[source](http://summit.sfu.ca/item/11790) [pdf](http://summit.sfu.ca/system/files/iritems1/11790/etd6748_CCheng.pdf)]
- to learn the syntax and semantics of a language requires learning conceptualizations of tangible things and processes first
- some conceptualizations are required as the basis for building up the formal syntactic and semantic understandings of the language
## Develop conceptualizations before learning the dry theory stuff
- I choose to focus on letting students develop the conceptualizations first during the grade 10 course by getting them to play around with the things and processes in coding
- We focus on building up the more formal syntactic and semantic understandings during grade 11 and 12
- Remember that in other academic subjects, students will have had around 10 years of learning math, physics, biology, etc. Except for one or two students, my classes are made up of students with zero experience in programming or computing science.
- So grade 10 is *like* elementary school for them. Grade 11 is like junior high. Not until grade 12 are they into high school coding.
## Long Live Hacking
- Silicon Valley hacker culture is focused on making things work, solving problems, creating products.
## To Echo The Grandmaster
Computing Science? Two words: Code wins. If you're wrong, your code won't work as needed. Only code that works in the end is right.
![code wins](art/grandmaster scene/background_46481.jpg)
### "Code wins arguments." - Zuckerberg
- This raises the bar significantly for teachers and students.
- A truly bad essay could still get a point across.
- A truly bad robot could still maybe limp around and start a fire.
- A truly bad program just won't run or compile - end of story.
- Every student is tasked to create a fairly large program.
- Most end up with over 500 lines of code (loc), having churned through more than that, but some end up with over 1k to 1.5k loc in a single program.
- They are tasked to create more than one program in a semester, so many grade 10 students have experience writing over 1k loc, and some write over 2k to 3k loc.
- Lines of code is not a good measure of programmer productivity
- but beginning students can learn a lot from having made a working program with that much code on their own.
- at the least they've developed the guts to deep dive into that much code
## Lines of Code in what language?
- We've tried Python and Processing (a subset of Java).
- A very restricted subset of JS, "the Good Parts(tm)", can be just as easy as Python for a beginner
- Looks more like Java than Python. Nice as students do Java in grade 11 and 12 due to the AP program.
- I would not teach Java if it weren't for the AP course. Would much rather teach Python.
- U of A, MIT, U of C, SFU, and many others teach Python to CS freshman now.
- SE usually sticks to C++ for other reasons.
- JS allows students to do stuff at home without a compiler/interpreter. Just need a web browser.
- Can easily show off work to friends and family without them having install anything. Another good thing.
- Just don't try teaching Object Oriented Programming (OOP) in JS.
- JS has *prototypal* OOP, not the more popular *class-based* OOP in Java, C++, Python, etc.
- No need to confuse students with that.
- Stick to procedural or functional style programming in JS and everyone will be happy.
- We still teach data structures like dictionaries and arrays in JS.
## What kind of projects for grade 10s?
- Text-based games
- First major project for grade 10s. Still the best way to get students to focus on coding and learning the various programming structures like loops, conditionals, etc. without the distraction of making graphics.
- I've tried Khan Academy and very quickly switched back to text-based games. There's just more opportunities for students to play around with the various programming structures (loops, etc.) to their own liking vs. the graphics-first approach.
- Graphical game in the web browser using JQuery with various customizations and plugins
- Second major project for grade 10s.
- By "major", I mean it spans around 9 weeks!
- Consists of a number of smaller sub-projects to build up to their final product.
## What kind of projects for grade 11s and 12s?
- Grade 11s and 12s have to make up their own project.
- I discourage games as that's been done in grade 10, but I don't ban it.
- Grade 11s and 12s project examples:
- Real-time 3D raytracer built from first principles (i.e. linear algebra, computational geometry).
- Networked game server/client handling RPC via custom-made HTTP requests.
- Population evolution genetic simulation.
- Stock market analysis via ANN built from first principles (i.e. backprop derived with multidimensional calculus, in addition to various forms of Hebbian learning).
- Oil & Gas production data analysis using various numerical calculus techniques on data accessed from an engineering company's server via WSDL.
## What kind of projects for grade 11s and 12s?(cont.)
- more Grade 11s and 12s project examples:
- Photo to server storage app for Android mobile.
- Marine animal identification via computational vision algorithms.
- Language identification via computational linguistic algorithms.
- Web page screen scraping programs to search for prices of items on Amazon, etc.
- Generative art projects to make self-generating artistic graphics.
- Music synthesizer built with basic sine waves.
- Wireless robot control system pushing assembly style multi-byte encoded commands over serial over Bluetooth.
- Main Office staff and guest sign-in/out program - currently deployed to real use
## Difference between regular and AP program?
- AP course is a full-year commitment
- AP course runs with the same focus on culture as the other CS courses
- Difference is the focus on rigour in
- learning algorithms,
- language lawyering required in learning Java the language,
- exposure to more advanced data structures, and
- learning more SE related topics like OODA and development methodologies
## College Board goodies
- AP Exam
- it can let students receive university transfer credits,
- meaning the AP Computer Science A course content is equivalent (+/-0.05) to a university first year course in computing science
- Requires teacher to teach to a College Board audited syllabus if you want to advertise as teaching an official AP course
- EM High has the 3rd oldest College Board *audited* AP CS A course in Alberta, and
- the only one in southern Alberta. All others are in Edmonton. :)
- Other schools have been preparing students for the exam, of course, but haven't taught to a syllabus audited by the College Board.
## Alberta curriculum and AP
- Alberta's CTS CSE credits cover all topics in the AP course
- This raises the question of whether the Alberta CSE curriculum is too university-entrance focused. I think so.
- I use a lot of different resources to teach with, but the core backbone is **Blue Pelican Java** (BPJ), which helps me:
- teach split classes of varying abilities, and
- just generally be in more than one place at the same time (the reality of CTS teachers - like when I am called away to support the film class with live streaming broadcasts)
## Successes so far.
- students getting into CS/SE or related programs at universities like UWaterloo, UBC, MRU, U of A, U of C, UVic, SFU, etc.
- some students depended on CTS CSE credits as a science entrance course to gain university or college admission
- but more importantly, students who otherwise wouldn't be going to post-secondary into IT/CS or related fields are getting into those programs at places like SAIT, and
- students who are at risk of not graduating high school are doing well enough to pass and graduate
- retention rate is great:
- was 55% overall last to this year; 72% going into grade 12 Adv course (majority into AP).
- now 67% overall into next year; 83% going into Adv course (majority into AP).
- total enrolment is maxing out lab space:
- we're packing them in like sardines
- low cost, high volume operation.
## Current and Future work: Math/CS combined
- an attempt to broaden the appeal of CS and to re-frame how math is learned in grade 10 as part of CBE's Flexibility initiative
- Full year course combining Math 10C (5 credits) and Computing Science Intro (another 5 credits).
- Spiritually based on the concept of Discrete Math classes as taught in CS, or Numerical Analysis classes as taught in Math, in universities.
## Current and Future work: Math/CS combined (cont.)
- Cross-curricular opportunities to get concrete uses for the math they learn through CS projects:
- rather than traditional paper-based projects, we can do functional, skillful, and useful programs with custom UIs for real world usage scenarios
- Problem identification, solution development, and symbol manipulation skills transfers between CS and Math
- More calendar time to learn, but same number of school days as any other CS and Math classes, so nothing is watered down
## Current and Future work: Math/CS combined (cont.)
- First year offered 2013 Sept. Offering it again in 2014 Sept.
- Insufficient information to give more in-depth talk about it at this point as it's a work in progress.
- but 3 zeros:
- zero failures on shared standardized assessment in math 10C (i.e. assessments are no different than any other math class),
- zero withdraws,
- zero complaints.
## Future work:
- AP CS Principles in 2016 - still a few years out
- [Blue Pelican Java (BPJ)](http://www.bluepelicanjava.com/)
- [Think Java - How to Think Like a Computer Scientist (Downey)](http://www.greenteapress.com/thinkapjava/)
- AP Summer Institute (APSI) conferences: Toronto
- Take some university courses
- Code for fun (like this presentation...)
### If coding/hacking is truly useful, why stop with teaching students going into computing science and software engineering?
**Culture belongs to everyone, not just the anointed CS/SE people.**