Course Information FALL
https://utoronto.zoom.us/j/86510824442
Calendar (click on dates to jump to session information below)
SEPT | OCT | NOV | DEC | |||||||||||||||||||
Mo | Tu | We | Th | Fr | Mo | Tu | We | Th | Fr | Mo | Tu | We | Th | Fr | Mo | Tu | We | Th | Fr | |||
1 | 2 |
3 | 1 | 1 | 2 | 3 | 4 | 5 | 1 | 2 LOOPS |
3 | |||||||||||
6 |
7 | 8 | 9 |
10 | 4 |
5 | 6 | 7 |
8 | 8 RE |
9 AD |
10 ING |
11 WE |
12 EK |
6 |
7 LOOPS |
8 | 9 |
10 | |||
13 | 14 | 15 | 16 Welcome |
17 | 11 TGD |
12 FLOW |
13 | 14 NUMBERS |
15 | 15 | 16 LOGIC |
17 | 18DATA | 19 | 13 | 14 | 15 | 16 | 17 | |||
20 ADD D/L |
21 | 22 | 23 |
24 | 18 |
19 | 20 | 21 |
22 | 22 |
23 | 24 | 25 |
26 | ||||||||
27 |
28 STEP+ |
29 | 30 FLOW |
25 DROP D/L |
26 NUMBERS |
27 | 28 LOGIC |
29 | 29 |
30 DATA |
||||||||||||
KEY | class | exam due | holiday | |||||||||||||||||||
JAN | FEB | MAR | APR | |||||||||||||||||||
Mo | Tu | We | Th | Fr | Mo | Tu | We | Th | Fr | Mo | Tu | We | Th | Fr | Mo | Tu | We | Th | Fr | |||
3 | 4 | 5 | 6 | 7 | 1 AUTO |
2 | 3 PATT |
4 | 1 | 2 | 3 | 4 | 1 | |||||||||
10 | 11 | 12 | 13 | 14 | 7 | 8 | 10 | 11 | 7 | 8 APIS |
9 | 10 SEE |
11 | 4 | 5 LEARN |
6 | 7 ALIGN |
8 | ||||
17 | 18 RECAP |
19 | 20 AUTO |
21 | 14 | 15 PATT |
16 | 17 APIS |
18 DROP DL |
14 | 15 | 16 | 17 | 18 | 11 | 12 | 13 | 14 | 15 | |||
24 | 25 | 26 | 27 | 28 | 21 RE |
22 AD |
23 ING |
24 WE |
25 EK |
21 | 22 SEE |
23 | 24 LEARN |
25 | 18 | 19 | 20 | 21 | 22 | |||
31 | 28 | 28 | 29 | 30 | 31 | 25 | 26 | 27 | 28 | 29 | ||||||||||||
KEY | class | exams | holiday |
Jump to Getting Started | Flow | Numbers | Logic| InfoJigs | Repetition | Automation | Patterns | APIs | Secrets | Vision | Learning | Alignment
Course Description
This course introduces fundamental concepts from computer science as critical thinking skills. These thinking skills can serve as a foundation for further studies in technology but they are useful in all manner of everyday problem solving.
Computational reasoning begins with the habit of "thinking slowly" and being deliberate about how we communicate solutions to problems. We learn the discipline of stepwise refinement and the power of abstraction and decomposition.
We build up procedural thinking starting with sequence - developing our "step by step" intuition - and then adding contingency - decisions - learning to pay attention to proverbial forks in the road - where are they? what are the alternatives? on what basis is the choice among them made? Sequence plus contingency allows us to add repetition to our repertoire. We learn to recognize the kinds of problems that can be solved iteratively and how to design iterative solutions. We will supplement these basic styles of thinking in hand we can begin to consider more complex problems by the method of decomposition - breaking a large, hard-to-solve problem into smaller, more manageable problem that we know how to solve - and by learning the art of shifting our focus up and down so that we can move between the details of a problem and its overall shape.
Those are the big ideas. More concretely, we'll learn about number systems and logic and the way we can represent these in digital and electronic form. We then turn our attention to the general problem of automation and unpack the basics of how automatic computational machines work. This will take us into the realm of data structures and algorithms, modularity and patterns.
And then we'll look at some applications asking how machines keep secrets, how machines see, how machines learn, and how to keep the behaviors of machines aligned with human values.
I will endeavor to make the pedagogy here "look, listen, do" - that is, start with the readings/viewings prior to each class session and then we talk about the ideas in class - mostly as lecture/demonstration but also some discussion, and then you practice the skills in the problem sets that follow each class session.
Problem sets will be implemented as Quercus quizzes, assignments, and discussions. In general there will be one problem set per course topic - most topics are one class session but some are multiple class sessions.
Basic Course Info
Instructor Information | Student Resources |
---|---|
Name: Dan Ryan Email: Via Piazza Links to an external site. and Links to an external site. Quercus Inbox. This term we will use Piazza for most back and forth between you and me and between one another about the course material. The system is designed to get you help fast and efficiently from classmates and myself. Rather than emailing questions, post them on Piazza. This way (1) everyone can see the answers and (2) a classmate might answer more quickly or more helpfully than I do. Find our class page at: https://piazza.com/class/kuoammpcx3a3sd Links to an external site. Virtual Office Hours: TBA. Always via appointment on the Quercus calendar. If no is signed up for office hours when I go to sleep the day before I reserve the right not to be there. |
Quercus (Canvas) Student Guide |
SHORTCUTS | ZOOM Links to an external site. | "Paper" Syllabus | Books | Problem Sets | Exams | Discussions | Asynch Lectures | Synchronous Recordings | Bibliography |
Course Schedule
The work for this course proceeds topic by topic. Some topics will be stretch across multiple sessions. Each topic consists of asynchronous preparatory work, a synchronous "lecture," and an asynchronous problem set. The problem set in the 4th, 8th, and 12th weeks will be comprehensive exams. The overall grade for the course will consist of 40% problem sets and 25% midterm and 35% final exam.
The exam problem sets will be similar to weekly problem sets but comprehensive (covering the whole course to date) and possibly longer than weekly ones. Previous exams are here. These will be completed asynchronously and will be "open book," but once you begin the exam you are expected not to consult with others.
Index
Slide Decks | Readings | Notes (Google Doc) | Handouts | Review Questions | Problem Set |
Slow | Notes on Slow | RQs 01 | PS 01 | ||
Flow | Notes on Flow | RQs 02 | PS 02 | ||
Numbers | Notes on Numbers | RQs 03 | PS 03 | ||
Logic Links to an external site. | Notes on Logic Links to an external site. | RQs 04 | PS 04/Exam | ||
Information Jigs Links to an external site. | Notes on Info Jigs Links to an external site. | RQs 05 | PS 05 | ||
Repetition | Notes on Repetition | RQs 06 | PS 06/Exam |
Slide Decks
FALL
16 September "Welcome | Think Slowly | Our Tech Stack"
ZOOM 810 7076 7783 Links to an external site. (PC 200392) | notes Links to an external site. | slides Links to an external site. | pdf Download pdf | zip Download zip | Review Qs (Crowdsource Notes Links to an external site.) | Problem Set | Synchronous Recordings Why this course? How this course (logistics - remote/in-person, readings/viewings/problems, assignments/exams - and platforms - Quercus, Piazza Links to an external site., CodePen, Miro)? Substance (HTML, CSS, JS, slow thinking, stepwise refinement, pseudocode, SDRAD.
Readings, etc.
Pre-course Survey Links to an external site. Links to an external site. (see results HERE when ready)
View this slide deck about Platforms: Quercus, Piazza, CodePen Links to an external site.
Sign up for Piazza here Links to an external site. if you are not already able to access via nav menu on the left.
Links to an external site.DJR talking about some of the readings Links to an external site. (3m41s)
Start Reading the Text
Slow Thinking (review questions)
- Ryan MiniLecture "Thinking Slowly Links to an external site." (2020) (9m36s)
- Harold Edgerton and High Speed Photography(spend 15 minutes learning about)
- Harold "Doc" Edgerton Links to an external site. (website)
- Elemental MIT. "Harold 'Doc' Edgerton—How Fast Is Fast? Links to an external site." (1m51s)
- Time. 2016. "Milk Drop: Behind Harold 'Doc' Edgerton's Photo & High-Speed Photography Links to an external site." (5m22s)
- "Harold 'Doc' Edgerton "Remembering Doc" Infinite History Elemental MIT Links to an external site." (12m32s)
- Tony Generico Workshops. 2016. "Milk Drop - Doc Edgerton - Triggertrap Tutorial - Motion Sensor Links to an external site." (4m54s)
- Wikipedia, "High-speed photography Links to an external site."
- Kageyama (2012) Is Slow Practice Really Necessary? Links to an external site. (3m)
- Soni (2019) For creative solutions, slow and deliberate thinking is the key Links to an external site. (3m)
Stepwise Refinement (review questions)
- Learn Learn Scratch Tutorials (2020), Stepwise Refinement Tutorial Links to an external site. (7m)
- CS2110 Cornell. (2019) Stepwise refinement: The Raven Links to an external site.(6m) Links to an external site.
- LessonHacker (2013), Top Down / Modular Design Links to an external site. (10m)
- Ryan MiniLecture "Stepwise Refinement Links to an external site." (2020) (8m1s)
Pseudocode (review)
- Khan Academy. n.d., Planning with pseudo-code | Becoming a better programmer Links to an external site. (4m)
- Codecademy (2019), What is Pseudocode And How Do You Use It? Links to an external site. (11m)
- OPTIONAL Cameron (2016), Writing Good Beginner Pseudocode Links to an external site. (10m)
Black Box
- Wikipedia. "Black Box Links to an external site." (5m)
- OPTIONAL Walter Guevara 2018 "What is 'black-box code' and why it's important Links to an external site." (15m read)
Interesting
Agrawala, Maneesh, et al. "Designing Effective Step-By-Step Assembly Instructions
Links to an external site." (30m read)
Hamilton, Thomas. 2021. "Black Box Testing Vs. White Box Testing: Key Differences
Links to an external site." (10m read)
Tuesday 28 September "Our Tech Stack and More Slow Thinking"
zoom Links to an external site. Links to an external site. | notes | slides "OUR TECH STACK" Links to an external site. (PDF Download PDF), slides "SLOWLY II" Links to an external site. (PDF Download PDF)]
Thursday 30 September Introduction to Flow + Modularity
flowchart conventions; pseudocode to flowchart; everyday language to flowchart principles of abstraction and modularity
zoom Links to an external site.| notes Links to an external site. | slideshow Links to an external site. (pdf Download pdf) (zip Download zip) | Synchronous Recordings
Readings, etc.
-
- Filho. 2017. Computer Science Distilled, pp 1-5 Download Computer Science Distilled, pp 1-5
- Khan Academy. n.d., Planning with pseudo-code | Becoming a better programmer Links to an external site. 3m26s
- Codecademy (2019), What is Pseudocode And How Do You Use It? Links to an external site. (10m49s)
- Ryan, D. "Flowcharts 101" Download Ryan, D. "Flowcharts 101"
- Systems Innovation. 2015. Modular Design Links to an external site. (9m40s)
See also
-
- Wikipedia Editors (n.d.), Flowchart Links to an external site.
- Wikipedia Editors (n.d.), Modularity Links to an external site.
Interesting
-
- Sarhangi R. nd. "Modularity in Medieval Persian Mosaics"
- Monotrail Tech Talk. 2020. "Introduction to making modular Techno Links to an external site." ~18m
Tuesday 5 October
Thursday 7 October
Tuesday 12 October Solving Problems with Flow and Modularity
ZOOM Links to an external site. | notes | slides Links to an external site. | pdf Download pdf | zip | Problem Set Due 11 October midnight
Thursday 14 October Introduction to Numbers: Binary and Hexadecimal
numbers, exponents, logarithms. binary, powers of 2, dec2bin, bin2dec, arithmetic; hexadecimal, bin2hex, hex2bin, hex2dec, dec2hex; encoding ASCII, RGB, URL
ZOOM Links to an external site. | notes Links to an external site. | slideshow Links to an external site. | pdf Download pdf | zip Download zip | Review Qs | Problem Set | Synchronous Recordings
Readings, etc.
-
-
Introduction to the Readings Links to an external site.
(4m9s)
- Filho. 2017. Computer Science Distilled, p Download Computer Science Distilled, p 165 Download 165
- Eames Labs. 1977. Powers of Ten Links to an external site. (10m16s)
- Sample from among
- MathCrazyTutoring (2007), Binary Numbers in 60 Seconds Links to an external site. (1m35s)
- Khan Academy. 2011. "Binary Numbers Links to an external site." (10m33s)
- Khan Academy. 2014. "Introduction to number systems and binary Links to an external site." (9m59s)
- Cope (2017), Binary Numbers Explained for Beginners Links to an external site. (14m25s)
- Khan Academy. 2014. "Adding in Binary Links to an external site." (2m47s)
- The Organic Chemistry Tutor. 2018. "How To Convert Binary to Hexadecimal Links to an external site." (10m13s)
- Ryan Intro Counting by Two Links to an external site. (4m10s)
-
Tuesday 19 October
Thursday 21 October
Tuesday 26 October Solving Problems with Numbers
ZOOM | notes Links to an external site. | slides Links to an external site. | pdf Download pdf | zip | Problem Set Due 25 October midnight
EXAM
Midterm Problem Set I
Thursday 28 October Introduction to Logic
LOGIC I: Logical values, and/or/not, truth tables, other operators; logic and binary, logic and electricity, simple logic circuits
ZOOM Links to an external site.| notes Links to an external site. | slideshow Links to an external site. | pdf Download pdf | zip Download zip | Review Qs | Problem Set | Synchronous Recordings
Readings, etc.
-
-
- Filho. 2017. Computer Science Distilled, pp 5-13 Download Computer Science Distilled, pp 5-13
- INF1339. Bulls and Cows
- Cheever (n.d.), "An Introduction to Digital Logic" Links to an external site.
- Sample these to learn about truth tables
- Emily S. 2014. "Truth Table Tutorial Links to an external site." (7m50s)
- Angiewvc Links to an external site.. 2009. "Truth Table" Links to an external site. (5m3s)
- LearnYouSomeMath. 2016. "Truth Tables Tutorial (part 1) Links to an external site." (11m37s), Part II Links to an external site. (10m35s)
- William Spaniel has an explanation with lots (5m55s) of words on the screen
- Shakeel, Y. 2016. "Basic Logic Gate - AND OR NOT Links to an external site." (Tutorial with 6m7s video)
- James, J. 2014. "Boolean Algebra Explained part 1 Links to an external site." (5m3s)
- Sample these to learn about Karnaugh maps
- The Organic Chemistry Tutor YouTube Channel (2019), Introduction to Karnaugh Maps - Combinational Logic Circuits, Functions, & Truth Tables Links to an external site.
- Computer Science YouTube Channel (2016), Karnaugh Maps – Introduction Links to an external site.
- Sample these to learn about 7-segment displays
- Wikipedia Editors (nd), Seven-segment display Links to an external site.
- Watts, D. 2015. 4000 Series Logic ICs: The 4511 BCD 7 Segment Driver IC Links to an external site.
- ElectronicsTutorials (nd), 7-segment Display Counter Tutorial Links to an external site.
- Eater (2017), Designing a 7-segment hex decoder Links to an external site.
- dCode (nd), 7-Segment Display Decoder - Online Simulator Tool Links to an external site.
-
Tuesday 2 November
Thursday 4 November
R E A D I N G W E E K
Tuesday 16 November Solving Problems with Logic
LOGIC II: complex expressions, logical equivalence, DeMorgan's laws, simplification, Karnaugh maps, more complex circuits
ZOOM Links to an external site.| notes Links to an external site. | slideshow Links to an external site. | pdf Download pdf | zip | Review Qs | Problem Set | Synchronous Recordings
Thursday 18 November Introduction to Info Jigs
From Information to Bits to Data, Primitive and Abstract Data Types, Stacks & Queues & Arrays, Lists, Maps, and Dictionaries
ZOOM Links to an external site. | notes Links to an external site. | slideshow Links to an external site. | pdf Download pdf | zip Download zip | Review Qs | Problem Set | Synchronous Recordings
Readings, etc.
-
-
- DJR Lecture Part A (17m)
- Filho pp. 65-83; 123-146; optionally 101-121
- Haverbeke. 2019. "Values, Types, and Operators Links to an external site. ," a chapter in Eloquent JavaScript.
- Erwig (2017), The Search for the Perfect Data Structure Links to an external site. ," a chapter in Once Upon an Algorithm: How Stories Explain Computing
- Interview Cake. 2020. "Data Structures for Coding Interviews: Computer Science in Plain English Links to an external site. "
- Sample to learn something about JSON
- codeSTACKr. 2019. "Learn JSON not Jason in 10 Minutes Links to an external site." (15m23s)
- The Coding Train. 2015.10.2: What is JSON? Part I - p5.js Tutorial Links to an external site.
- The Coding Train YouTube Channel (2015), 10.3: What is JSON? Part II - p5.js Tutorial Links to an external site.
-
Tuesday 23 November
Thursday 25 November
Tuesday 30 November Solving Problems with Info Jigs
Your Friend JSON
ZOOM Links to an external site. | notes Links to an external site. | slideshow Links to an external site. | pdf Download pdf | zip Download zip | Review Qs | Problem Set | Synchronous Recordings
Thursday 2 December Introduction to Repetition
Iteration Overview, Simple Repetition - Brute Force, Counting Repetitions, Recursion, nested loops; brute force; backtrack; recursion; memo-izing; orders of magnitude; orders of function (linear, quadratic, exponential); probability
ZOOM Links to an external site. | notes Links to an external site. | slideshow Links to an external site. | pdf Download pdf | zip Download zip | Review Qs | Problem Set | Synchronous Recordings
Readings, etc.
-
-
- Introduction to the readings (in class)
- Filho ch 3 Strategy (pp 35-62)
- Meyers, Bob @FSU Control Structures - Repetition Links to an external site.
- Learn some things about complexity
- Filho ch 2 "Complexity" (pp 25-34)
- Grace Hopper Academy. "Introduction to Computational Complexity - A Tutorial on Algorithms and Complexity Links to an external site." (13m36s)
- Hackerdashery. "P vs. NP and the Computational Complexity Zoo Links to an external site." (10m43s)
- Wikipedia. " Computational Complexity Links to an external site. "
- Excellent Lecture about a Hard Topic by a University of Western Ontario Grad
- Borradaile, G. 2014. "Basics of Computational Complexity for Non-Computer Scientists Links to an external site." (37m47s)
- Drowell, E. "Know Thy Complexity Links to an external site."
- Schneider, C. n.d. "Introduction to Complexity Theory Links to an external site." (10pp)
-
Tuesday 7 December Solving Problems with Repetition
ZOOM Links to an external site. | notes | slideshow Links to an external site. | pdf Download pdf | zip Download zip | Review Qs | Problem Set | Synchronous Recordings
EXAM 2
WINTER
Course Delivery Method
This is a lecture/problems/tutorial course that will be delivered remotely this semester. Some material will be available asynchronously and we will endeavor to make recordings of synchronous activity available but cannot guarantee that this will always be possible nor that it will always be accomplished promptly. Course related conversations will be handled via Piazza and all work will be submitted via Quercus.
E-mail Policy and Office Hours
Email: Correspondence that is inappropriate for Piazza should be done through Quercus Inbox. This ensures that it comes to me with a subject header that filters it into a mailbox that I pay attention to. I'm usually very prompt on emails. Exceptions late in the evening and on weekends.
Office Hours: TBA. Office hours are always via appointment on the Quercus calendar and held via Zoom If no is signed up for office hours when I go to sleep the day before I reserve the right not to show up.
Course Objectives
The purpose of this course is to convey, in a manner that is accessible to students coming from a wide variety of intellectual backgrounds and useful to students destined for a wide variety of further avenues of study, a set of intellectual reflexes and styles of thought and a repertoire of practical skills drawn from, and deployed in, computational science. The course is NOT intended as "computer science 101" or "a first course in programming" or "introduction to data processing."
Course Learning Outcomes
This course introduces students to a style of thinking that yields problem solutions that can be programmed, are predictably reliable, involve careful and exhaustive consideration of problem and solution spaces, and can be implemented at high speed and high volume. Although this usually means solutions that are carried out by machines, the application of this style of thinking is more generally applicable.
The goal, then, will be to inculcate an "algorithmic" style of thinking: the deliberate decomposition of large and complex problems into a set of nested subproblems, the construction of solutions in terms of sequence, repetition, and contingency, the recognition and exploitation of pattern, and the inclination to defer detail, automate, and modularize.
Upon successful completion of this course you will have enhanced your capacity to
- have enhanced general purpose critical thinking skills (THINK)
- think slowly about things that move fast and/or have many parts (SLOW)
- break large and complex problems into cognitively/computationally/organizationally manageable subproblems (DECOMPOSITION)
- recognize, describe, and exploit patterns (PATTERN)
- defer detail and move between levels of abstraction (ABSTRACTION)
- build complex, robust, and legible systems from cognitively manageable and reusable parts (MODULARITY)
- think about data and information structurally (DATA)
- understand the complexity of computational solutions (COMPLEXITY)
- formulate problems and solutions using computational thinking in different fields of endeavor (APPLY)
- deploy a set of mental categories, intellectual reflexes, conceptual tools, and practical skills necessary for a participatory role contemporary information technologies (TECH)