From dfd5c1d7347cb38684216fcce8dd09af7fb2cb00 Mon Sep 17 00:00:00 2001 From: Caleb Sander <caleb.sander@gmail.com> Date: Sat, 19 Sep 2020 12:45:50 -0400 Subject: [PATCH] Update README for 2020 FA --- README.md | 45 ++++++++++++++++---------------- notes/async-await/async-await.md | 2 +- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/README.md b/README.md index fa36e20..c75943c 100644 --- a/README.md +++ b/README.md @@ -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 diff --git a/notes/async-await/async-await.md b/notes/async-await/async-await.md index dec682f..b994c03 100644 --- a/notes/async-await/async-await.md +++ b/notes/async-await/async-await.md @@ -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. -- GitLab