Our goal is to learn programming for the server (i.e back-end programming). This is a broad topic, so specifically we will learn how to gather, store, and serve data. We will gather data by scraping a website, store it in a database, and stand-up a restful api for others to consume the data we stored.
Technologies we will use throughout the course to do this:
- javascript: javascript?, mdn, eloquentjs
- bash: bash, command line
- node
- mongodb
- html
- css
- git
Frameworks we will probably use (frameworks move pretty fast, a new one might come out that we may like more):
- Get comfortable with not knowing (and be honest about what you do not know)
- Through knowing how to look things up, we gain our comfort in not knowing
- Respect the space we are in and the people around you
- Slack Channel, note on slack the previous course is on there, but I made a private summer session channel.
- Email: [email protected]
If you are an adult and are taking this course, I do not believe any high school/college type tricks are needed (i.e grading homework, making up class, etc.), as you are willfully doing this and are already putting in effort because you want to. That being said, we do have a graduation showcase, and we do give out certificates, and this is something you can put on your linkedin. If you want to be able to do any of these things, 80% attendance is required (i.e you can miss 3 classes).
We will have homework, though I strongly suggest independent reading of the materials I provide for each topic we cover. If you are new to programming, at least 1 hour of reading a day is a good guideline. There will usually not be answers for the homework (as there are a lot of ways to do things), but if you need help, the mentors, myself, and the slack channel are available to you. Do not be afraid to reach out!
I will update github as we go through the course with new material. The material is put in a folder like 01-javascript - the syllabus is the best guide to find the material we covered in a given class. In each of those folders you will also see a folder called example/ in there I will stick anything I write during the class, which includes answers to any in class exercises we do.
Homework is setup by week, and you can find the homework in the exercises folder. I feel doing homework between Tuesday and Thursday to be a little onerous, so my expectation is that you are doing the homework for each week over the weekend.
Eventually we will start to have a lot of code written and we will want to build on top of that. I will have some kind of project folder where we will start to accumulate a coherent project. For example, we will have an express application that serves from our mongo db, and we will have a scraper that is scheduled to scrape from some site of our choosing.
I do enjoy questions during class. There is a ton of material/resources on the internet one can use to learn to program, but none of it is interactive. My hope is this course is a place you can ask questions and get some human interaction with other programmers if you are trying to make the switch.
- County Assessor
- IMDB, someone already did what we will be doing
- Pitchfork (my favorite website)
- Oklahoma
- Netflix, because they removed their public api
<tr>
<th colspan="3" align="left">Week 2</th>
</tr>
<tr>
<td>2.1</td>
<td>Javascript: Program Structure</td>
</tr>
<tr>
<td>2.2</td>
<td>Git</td>
<td>Javascript: Arrays and Objects</td>
</tr>
<tr>
<th colspan="3" align="left">Week 3</th>
</tr>
<tr>
<td>3.1</td>
<td>Javascript: Functions</td>
</tr>
<tr>
<td>3.2</td>
<td>Node: Introduction</td>
</tr>
<tr>
<th colspan="3" align="left">Week 4</th>
</tr>
<tr>
<td>4.1</td>
<td>Node: npm and require</td>
<td>Databases: Modeling and Introduction</td>
</tr>
<tr>
<td>4.2</td>
<td>Databases: MongoDB</td>
</tr>
<tr>
<th colspan="3" align="left">Week 5</th>
</tr>
<tr>
<td>5.1</td>
<td>Web Fundamentals: http, html, css, RESTful</td>
<td>Express (node.js framework): Introduction</td>
</tr>
<tr>
<td>5.2</td>
<td>Express (node.js framework): Intermediate</td>
</tr>
<tr>
<th colspan="3" align="left">Week 6</th>
</tr>
<tr>
<td>6.1</td>
<td>Mongoose: Introduction</td>
</tr>
<tr>
<td>6.2</td>
<td>Mongoose: Continued</td>
<td>Request: Http client</td>
</tr>
<tr>
<th colspan="3" align="left">Week 7</th>
</tr>
<tr>
<td>7.1</td>
<td>Cheerio: Introduction</td>
<td>Oklahoma County Assessor: Site Overview</td>
</tr>
<tr>
<td>7.2</td>
<td>Oklahoma County Assessor (Capstone): Scraping Pt. 1</td>
</tr>
<tr>
<th colspan="3" align="left">Week 8</th>
</tr>
<tr>
<td>8.1</td>
<td>Oklahoma County Assessor (Capstone): Scraping Pt. 2</td>
</tr>
<tr>
<td>8.2</td>
<td>Oklahoma County Assessor (Capstone): Scraping Pt. 3</td>
<td>Oklahoma County Assessor (Capstone): Api</td>
<td>Next Steps</td>
</tr>
</tbody>
Week 1 | First Hour | Second Hour |
---|---|---|
1.1 | Class Introduction | Javascript: Introduction |
1.2 | Javascript: Variables and Values | Bash: Introduction |