Skip to content

Course materials for the 2017 Fall semester of HackCville's Source program

License

Notifications You must be signed in to change notification settings

xiexieeric/source

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Fall 2017 Source Syllabus

Description:

Source is a backend web development program. You will learn to communicate with the internet, write the business logic that drives web applications, and manipulate the servers that will ultimately deploy and deliver them. The course will be taught in JavaScript and NodeJS

Who This Program is For:

Source is targeted toward people with a preference for the logic of programming, be it a first-year in CS1110 who is looking to translate their knowledge into functional services, a Wireframe grad who wants to learn server-side web development, or an entrepreneur who wants to improve their tech savviness. If you’re more interested in the inner-workings of a web application rather than the presentation, this is the class for you.

No programming experience is required, as all the code will be explained line-by-line, but understand that an unwillingness to learn coding outside of class will completely limit your ability to build off the course material in your recreational coding or career.

Class Format:

We will meet twice a week:

  • Lecture: Tues 6:45-8:15pm in Launchpad
    • Introduce concepts and examples
  • Workshop: Sun 11am-12:15pm in 17
    • Reinforce skills and build projects

Community:

Participants will be integrated in three aspects of the HC community

  1. Source participants:
  • 1 on 1’s
  • Study sessions
  • Socials
  1. Other program participants:
  • Project collaborations
  • Special interest groups (Tech, photo, sustainability, etc)
  1. HackCville
  • Exposure to leadership
  • Community dinners

Expectations

  • Attend all lectures and workshops
    • Absences beyond 5 will result in failure to complete the program
  • Attend a community event every week for the first 3 weeks
  • Grab coffee with another Source student
  • Project:
    • Due at the end of the semester
    • Consumes at least 1 web API
    • Source project may be submitted to another class, but a class project may not be your Source project

Class Schedule:

Here is an overview of the topics that will be covered, and the general order in which they will be presented.

  1. Intro to Bash and Git
  • Description: Anyone working in tech can benefit from knowing a little bash and git. Rather than copying strange hieroglyphics from a tutorial, find out how the command line works and why you should incorporate it into your workflow.
  • Objectives: Introduce common command line functions like cd, ls, mkdir, git, and their relevance in software development and project management.
  • Workshop: Directory navigation in bash. Git workflow practice.
  1. JavaScript: Part 1
  • Description: JavaScript will be our main language this semester, and it is important for you to be comfortable with it.
  • Objectives: Familiarize yourself with JavaScript syntax, and learn the basics features like string manipulation, arithmetic, and arrays.
  • Workshop: Practice JS on FreeCodeCamp.
  1. JavaScript: Part 2
  • Description: We will continue to practice JS this week while covering intermediate topics such as functions, classes, and JSON.
  • Objectives: Become familiar with object oriented programming in JS.
  • Workshop: Practice JS on Codecademy.
  1. Node.js: More than Just a Frontend Language
  • Description: Node.js has revolutionized web development by allowing Javascript to be run on servers, just like Python or Java. It’s fast, and has a huge community of developers.
  • Objectives: Use Node.js and Express.js to write a web server.
  • Workshop: Work on website examples using Express.
  1. Understanding Async
  • Description: Most HTTP requests that we make with JavaScript will be asynchronous, which surprises beginners. We will see how to make use of promises and callback functions to handle async methods.
  • Objectives: Explain the meaning of async functions, and how to handle them using JS features.
  • Workshop: Write a web scraper using JavaScript and Node.
  1. How Computers Talk to Each Other: HTTP and REST APIs
  • Description: Our web applications often receive communications from other computers on the internet, which is handled by the backend code. Thankfully, there are frameworks that make it easy to handle those requests.
  • Objectives: Introduce the basics of HTTP and data formats
  • Workshop: Write a simple REST API that provides some simple dataset.
  1. Web Sockets: Interactive Communication
  • Description: You've set up a web server, but you want communication to be a two-way street. How can clients send information to the server on top of receiving data from the server? The answer--web sockets!
  • Objectives: Become familiar with web sockets and Socket.io.
  • Workshop: Write a chat application using Node.js, Socket.io, and Javascript.
  1. Self-Hosting Servers: Leveraging Your Router and Local Network
  • Description: You’ve built a simple web server, and you want to show friends, family, and employers. You want to host it online, but your $7 monthly allowance is already being spent on Netflix.
  • Objectives: In this class you will learn how to hack the internet service and router that you already pay for, and use it to host the Node.js web server from the Raspberry Pi.
  • Workshop: Practice making HTTP requests via NodeJS.
  1. No Servers? No Problem: Moving to the Cloud
  • Description: Expecting hundreds of visitors but don’t own a mansion? Learn how even the absence of hardware can be solved with cloud computing. We will move our self-hosted website to the cloud, freeing it from our own hardware’s limitations. Useful for people who are scaling up their project at minimal cost.
  • Objectives: Understand the benefits of cloud computing, setting up an AWS account, and spinning up an EC2 micro instance.
  • Workshop: Move the web server to Amazon Web Services, and introduce the benefits of cloud computing.
  1. ES6: JavaScript for the Future (Possible Elective?)
  • Description: While JavaScript became more popular for web developers, it lacked many features compared to other programming languages. ES6 is the latest version of JavaScript, and incorporates features that make backend work much easier.
  • Objectives: Cover the most useful features of ES6, including Classes, arrow functions, and destructuring.
  • Workshop: Practice using ES6 and set up Babel for transpiling to vanilla JS.
  1. Elective Topic: Electron/Databases/Web Technologies
  • Workshop: Work on project.
  1. Crossover Topic: Data Science/Frontend
  • Workshop: Work on project
  1. Siri, Alexa, and Cortana Oh My! : Developing for the Internet of Things
  • Description: Voice is quickly becoming essential to the way we interact with the internet, and it’s easy to create apps for voice assistants like Amazon’s Alexa.
  • Objectives: Combine our knowledge of JavaScript and Node to write a simple Alexa skill.

About

Course materials for the 2017 Fall semester of HackCville's Source program

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published