Commit dfd5c1d7 authored by Caleb C. Sander's avatar Caleb C. Sander
Browse files

Update README for 2020 FA

parent ecfb12b9
No related merge requests found
Showing with 23 additions and 24 deletions
+23 -24
......@@ -2,7 +2,7 @@
## Course description
This CS 11 track introduces asynchronous programming, an increasingly widespread paradigm for I/O-heavy applications.
This CS 11 track introduces asynchronous programming, an increasingly common paradigm for I/O-heavy applications.
Learn how highly concurrent servers and responsive webpages can be built without multithreading.
We will cover techniques including callback functions, promises, and streams, and apply them to file I/O, networking, user interfaces, and more.
Examples and projects will be in *modern* JavaScript, running both in the browser and as server-side programs in Node.js.
......@@ -16,32 +16,31 @@ No JavaScript experience is needed; the necessary language features will be intr
Hi, I'm Caleb!
I'm a Computer Science/Economics major and I really enjoy low-level software design and abstractions.
I've TAed for CS 2, 3, 21, and 24 and will be a TA for CS 124 this term.
I designed this course in a several-term CS 81 project because asynchronous programming is a powerful tool being used more and more in industry, but isn't part of the Caltech CS curriculum.
I'm living in the Boston area this term, so I generally won't be available after ~10 PM PDT.
I've TAed for CS 2, 3, 21, 24, and 124.
I designed this course as a year-long CS 81 project.
I chose to teach about asynchronous programming because it is a powerful tool leveraged in industry for its unique approach to I/O, yet the Caltech CS curriculum doesn't cover it in depth.
This course was taught for the first time in 2020 SP.
You can contact me via:
- Email: csander@caltech.edu
- DM on Campuswire (see [Resources](#campuswire))
- Zoom during office hours (W 17:00-20:00; R 19:00-22:00): (see [Resources](#zoom-office-hours))
- Zoom during office hours (W 16:00-18:00; R 20:00-22:00): (see [Resources](#zoom-office-hours))
## Schedule
| Weeks | Topic and notes | Project | Due (at 10 PM PDT) |
| ----- |---------------- | ------- | ------------------ |
| 1-2 | [Callbacks](notes/callbacks/callbacks.md) | [Minesweeper](specs/minesweeper/minesweeper.md) | 2020-04-17 |
| 3-4 | [Promises](notes/promises/promises.md) | [`make`](specs/make/make.md) | ~~2020-04-24~~ 2020-05-01 |
| 5-6 | [Streams](notes/streams/streams.md) | [`grep`](specs/grep/grep.md) | ~~2020-05-08~~ 2020-05-15 |
| 7 | [HTTP](notes/http/http.md) | [Wiki Game](specs/wiki-game/wiki-game.md) | ~~2020-05-15~~ 2020-05-22 |
| ~~7~~ | ~~[WebSockets](notes/websockets/websockets.md)~~ | ~~[Chat client](specs/chat/client.md) **OR** [Chat server](specs/chat/server.md)~~ | ~~2020-05-22~~ |
| 8-9 | [`async`-`await`](notes/async-await/async-await.md) | [MiniVC](specs/mini-vc/mini-vc.md) | 2020-06-05 |
| Weeks | Topic and notes | Project | Due on Friday at 11 PM PDT/PST |
| ----- |---------------- | ------- | ------------------------------ |
| 1-2 | [Callbacks](notes/callbacks/callbacks.md) | [Minesweeper](specs/minesweeper/minesweeper.md) | 2020-10-09 |
| 3-4 | [Promises](notes/promises/promises.md) | [`make`](specs/make/make.md) | 2020-10-23 |
| 5-6 | [Streams](notes/streams/streams.md) | [`grep`](specs/grep/grep.md) | 2020-11-06 |
| 7-8 | [HTTP](notes/http/http.md) | [Wiki Game](specs/wiki-game/wiki-game.md) | 2020-11-20 |
| 9-10 | [`async`-`await`](notes/async-await/async-await.md) | [MiniVC](specs/mini-vc/mini-vc.md) | 2020-12-04 |
## JavaScript reference
There is a description of the important parts of the JavaScript language in [`notes/js/js.md`](notes/js/js.md).
It also has information specific to running JS in the browser and through Node.js.
You're welcome to read as much of it as you want, but it's quite long.
Feel free to read as much of it as you want, but it's quite long.
I will point out sections that may be useful on each project.
## Resources
......@@ -49,7 +48,7 @@ I will point out sections that may be useful on each project.
### Campuswire
We will be using Campuswire as a class forum.
You can join the class [here](https://campuswire.com/p/G110E6357).
You can join the class [here](https://campuswire.com/p/G73AA8801).
If you haven't used it before, Campuswire is similar to Piazza, but the interface is much better and you can also use it for chat.
If you have a question about a project or the course in general, please post there first!
I will answer questions as soon as I can, but other students are also welcome to respond.
......@@ -64,9 +63,9 @@ You can DM me if you have an individual concern (e.g. asking about an extension
This online-only term is new for me too, so I'm not sure what formats are the most convenient for helping you.
I think Campuswire will be the easiest for most questions, but I'd like to be available to answer questions or discuss confusing concepts face-to-face as well.
To that end, I'll be available for Zoom office hours during the following times (PDT) each week:
- Wednesday 5-8 PM
- Thursday 7-10 PM
To that end, I'll be available for Zoom office hours during the following times (PDT/PST) each week:
- Wednesday 4-6 PM
- Thursday 8-10 PM
My personal meeting ID is [586-773-0238](https://caltech.zoom.us/j/5867730238).
......@@ -74,7 +73,7 @@ My personal meeting ID is [586-773-0238](https://caltech.zoom.us/j/5867730238).
### Student wellbeing
Asynchronous programming requires a different way of thinking about programs, so I hope the course challenges you a bit.
Asynchronous programming is an unusal way to write programs, so I hope the course challenges you a bit.
However, please remember that it is P/F and only 3 units.
I do not want the course to take up too much of your time or cause you stress.
If there is anything I can do to make the course more manageable for you, please let me know!
......@@ -92,7 +91,7 @@ I also don't really care when projects are submitted, but I want to make sure th
If you have an extenuating circumstance, e.g. a family emergency, please email me; I am happy to grant an extension.
Aside from extensions, I am also giving you **6 total late days** to apply to any of the projects.
Aside from extensions, I am also giving you **5 total late days** to apply to any of the projects.
You may use at most 3 late days on a single project.
If you are taking late days, please email/DM me to let me know before the project is due so that I can hold off on grading your submission.
......@@ -130,7 +129,7 @@ I suggest you always check GitLab to ensure your commits were pushed and include
### Grading
Your grade will be the unweighted average of your grades on all the projects.
The passing threshold is 65%.
The passing threshold is 70%.
For the projects with tests, your grade will be primarily determined from whether you are passing the tests.
However, I will deduct points for not writing code in an asynchronous style, e.g. using Node.js's synchronous I/O functions or performing I/O tasks in sequence when they can be done in parallel.
......@@ -142,7 +141,7 @@ The specs are intended to be specific about what they expect, but please ask que
### Feedback
This is the first time this CS 11 track is being taught, and I hope it will stick around!
This is the second time this CS 11 track is being taught, and I hope it will stick around!
I really value your constructive feedback on the course so I can improve it for the future.
Please let me know:
- If my notes on any topic are helpful or unhelpful
......
......@@ -3,7 +3,7 @@
## Recap of `Promise`s
JavaScript's `Promise` abstraction was discussed in the [notes](../promises/promises.md) near the start of the course and you had a chance to use it on the Make project.
I'l give a quick refresher since `Promise`s are essential to the `async`-`await` syntax.
I'll give a quick refresher since `Promise`s are essential to the `async`-`await` syntax.
A `Promise` represents an asynchronous task or computation.
When the task or computation finishes, the `Promise` "resolves" to a value.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment