Lectures
This page will contain the slides, notes, and example code pertaining to lecture.
- NodeJS install instructions: Follow these instructions to install NodeJS on your machine.
- MongoDB install instructions: Follow these instructions to install MongoDb on your machine.
June 13: FINAL LECTURE: What’s next?
- Slides:lecture27.odp/lecture27.pptx
- Important ideas we didn’t cover
- Module bundling with browserify
- Older browser support with babeljs
- Testing
- Accessibility
- Libraries and frameworks
- Rants and general advice
- Don’t use jQuery: prefer babeljs
- Don’t use Bootstrap: learn CSS
- Pick a frontend framework and build something on it
- Important ideas we didn’t cover
- No lecture on next week: Work on your final project!
June 11: Middleware; Data modeling; Authentication
- Slides:lecture26.odp/lecture26.pptx
- Middleware and Routes
- Single-page web app https://github.com/fullstackccu/fullstackccu.github.io/tree/master/lectures/25/codes
- More MongoDB examples
- Authentication
- Code
June 6: Templates, Modules, and Routers
- Slides:lecture25.odp/lecture25.pptx
- Web application architecture
- Multi-page web apps (server-side rendering)
- Templates with Handlebars
- NodeJS Modules
- Express Router
- Web application architecture
- Code
June 4: MongoDB and NodeJS
- Slides:lecture24.odp
/lecture24.pptx
- MongoDB and NodeJS
- insert, find, delete, update, upsert
ObjectID
- Web application architecture
- Multi-page web apps (server-side rendering)
- Single-page web apps
- MongoDB and NodeJS
- Code
- Final Project FINAL PROJECT ASSIGNED
May 30: MongoDB
- Slides: lecture23.odp/lecture23.pptx
- MongoDB
mongo
/mongod
- CRUD operations
- MongoDB and NodeJS
- MongoDB
- Code
- MongoDB Installation
- Instructions: Follow these instructions to install MongoDB on your machine. This will be necessary to run lecture examples.
May 28: Saving data; MongoDB intro
- Slides: lecture22.odp/lecture22.odp
- Saving data
- POST body
body-parser
- Saving to a file
- MongoDB: Saving to a database
- Saving data
- Code
May 23: async / await
; more Express; more fetch()
- Slides: lecture21.odp/lecture21.pptx
async / await
- Sending data to the server
- Returning JSON from Express
- Code
- Homework 5 HW5 assigned
May 21: More Express; fetch()
and localhost
- Slides: lecture20.odp/lecture20.pptx
npm
- Express
fetch()
to localhost
- Code
May 16: Servers, NodeJS and Express
- Slides: lecture19.odp/lecture19.pptx
- Servers in general
- NodeJS
npm
- Express
- fetch() to localhost
- Code
- Node Installation
- Instructions: Follow these instructions to install NodeJS on your machine. This will be necessary to run lecture examples, to complete HW5 and to complete the final project. (Thanks to our TA Zach Maurer for writing these awesome instructions!)
May 14: More Fetch; JavaScript Event Loop
- Slides:lecture18.odplecture18.pptx
- More Fetch API:
- Querying 3rd-party REST APIs
- Submitting forms
- CORS
- Asynchrony in JavaScript
- JavaScript event loop
- More Fetch API:
- Code
- Fetch from Spotify / demo
May 9: Fetch API and JSON; 3rd-party APIs
- Slides: lecture17.odplecture17.pptx
- Fetch API and JSON
- Fetch in a class
- REST APIs
- HTTP Methods: GET
- Query parameters
- Code
May 7: Fetch API, Promises
- Slides:lecture16.odp/lecture16.pptx
- Finish functional JS
- Currying
- Anonymous functions
- Closures
- Fetch API
fetch()
- Promises and
.then()
- JSON
- Finish functional JS
May 5: Callbacks; Functional JavaScript
- Slides:lecture15.odp/lecture15.pptx
- Callbacks
- Functional JavaScript
- Closures
- Code
- Button example: Communicating between two classes (
Button
toMenu
) with callbacks
- Button example: Communicating between two classes (
Apr 30: Custom events, this
, and bind
; first-class functions
- Slides:
/ lecture14.odp
- Custom events example
this
keyword /bind()
- First-class functions
- Callbacks
- Code
- Button example: Communicating between two classes (
Button
toMenu
) with custom events this
mystery 1: See howthis
changes in different contextsthis
mystery 2: See howthis
changes in different contexts- Present example(with bugs): Communicating between two classes (
Present
toApp
) via callbacks - Present example: Communicating between two classes (
Present
toApp
) via callbacks
- Button example: Communicating between two classes (
Apr 25: More ES6 classes; this
and bind
- Slides:lecture13.pdf/lecture13.pptx
- More ES6 classes
this
keyword /bind()
- Communicating between classes
- Present owns App: BAD STYLE DON'T DO THIS
- App and Present: Custom Events
- App and Present: Callback
- JavaScript application architectureObject-oriented photo album
Apr 22: CSS Animations; ES6 classes
- Slides: lecture12.odp/lecture12.pptx
- Keyboard events
- Pointer events
- Animations
- Intro ES6 classes
- Code: (see more in slide deck)
- Dragon walk: Codepen example of dragging a dragon along the x-axis
- 2D dragon walk
- OO present with bind: Object-oriented Present example
- OO photo album: Object-oriented Photo Album Example
- OO Two classes: App and Present Example
Apr 18: Keyboard, Mouse, and Touch events
- Slides:lecture11.odp /
lecture11.pptx
- Keyboard events
- Pointer events
- Animations
- Code:
- key-events.html: Prints out keyboard events in the Web Console.
- photos-start.html: Starter code for our photos example.
- photos-desktop-finished.html: Finished photo album example with keyboard navigation
- photos-mobile-finished.html: Finished photo album example with swipe left/right navigation
Apr 16: More JavaScript events
- Slides:lecture10.odp/
lecture10.pptx
- Event propagation: bubbling and capturing
- Finish case study
data-*
attributes- Mischief and hacks
- Code:
- display-toggle.html: Display toggle. Shows how clicking an inner element fires the click event on the outer element.
- bubbling.html: Event bubbling example. See slides for more variants.
- empty-extension.zip: Empty extension that does nothing but print a log message
- quora-extension.zip: Extension that removes the Quora login nag screen
- adblock-block-block.zip: Extension that unblocks Adblock on OnDemandKorea
Apr 11: More DOM; case study
- Slides:
lecture09.odp/
lecture09.pptx
- Adding and removing elements from DOM
- Case Study: tic-tac-toe
- Traversing the DOM
- Code:
- dom-walk-script.js / html: Recursively prints out every DOM element of the HTML page.
- tictactoe.js / html / css: Simple tic-tac-toe game
- Tic-Tac-Toe: Magic Number Version
- tictactoe.js / html / css
Apr 9: DOM and events
- Slides: lecture08.odp/
lecture08.pptx
- Finish language feature tour
- DOM: Document Object Model
- Basic event handling
Mar 28: Introduction to JavaScript
- Slides:lecture07.odp/
lecture07.pptx
- What is JavaScript?
- Language feature tour
- Code:
- first-js.html / script.js: A button with a simple event handler.
Mar 26: 講座:全棧程式開發 雜談
- Slides:講師投影片
Mar 21: position
; Mobile web
- Slides: lecture06.odp
position
- Useful
background-image
properties - Mobile CSS
- Skipped but useful:
em
andrem
- Code:
- mobile.html / css: Our first mobile web example.
- squarespace-mobile.html / css: The mobile version of our Squarespace layout.
Mar 19: More flexbox and layout
- Slides:lecture05.odp
- More flexbox: shrink and grow
height
/width
percentage quirks:vh
/vw
andbox-sizing
- Block vs inline guide: review if necessary
- Code:
- squarespace.html / css: A rough copy of the Bedford Squarespace template. Be sure to inspect elements and view the source to see how it works!