- Course Description
- Prerequisites
- Course Specifics
- Learning Objectives
- Schedule
- Course Deliverables
- Late Assignment Policy
- Evaluation
- Additional Resources
- Information Resources
- Make School Course Policies
In this course, students discover the value of strongly typed languages in server-side architectures, and dive deep into performant, concurrent programming paradigms present in Go. In studying Go, which is known for its ability to blend the expressive features of dynamic languages (Python, JavaScript) with the performance capabilities of compiled languages (C, C++), students will gain the syntactic diversity required in today's large-scale platform engineering pursuits. Throughout the course, students will learn and implement the design patterns and best practices that make Go a top choice at high-velocity startups like Lyft, Heroku, Docker, and Medium.
Course Delivery: online | 7 weeks | 19 sessions
Course Credits: 3 units | 37.5 Seat Hours | 75 Total Hours
- Design and implement command line interfaces, APIs, and bots in Go.
- Identify and describe the architectures wherein the features of Golang could be best utilized.
- Build data structures that support unmarshalling JSON retrieved from third-party APIs.
- Apply Object Relational Mapping techniques to persist data to relational databases in Go.
- Gain experience deploying APIs and bots to production.
Course Dates: Monday, May 31 through Friday, July 16, 2021 (7 weeks)
Class Times: Monday, Wednesday, Friday at 2:15pm - 4:00pm PST (19 class sessions)
Class | Date | Topics |
---|---|---|
- | Mon, May 31 | No Class - Memorial Day |
01 |
Wed, June 2 | 🆕 Welcome to Class / Static Languages |
02 |
Fri, June 4 | Intro to Go / Tutorial Launch |
03 |
Mon, June 7 | Drill Day |
04 |
Wed, June 9 | Static Site Generators |
05 |
Fri, June 11 | Files & Directories |
06 |
Mon, June 14 | 🆕 Working with Modules |
07 |
Wed, June 16 | Fast Functionality via 3rd Party Libraries |
08 |
Fri, June 18 | 🔬 Lab: SSG Project |
09 |
Mon, June 21 | Scraping the Web |
10 |
Wed, June 23 | Scraping the Web |
11 |
Fri, June 25 | Working With JSON |
12 |
Mon, June 28 | 🆕 Pointers |
13 |
Wed, June 30 | Concurrency & Goroutines |
14 |
Fri, July 2 | Project Kickoff presented by @OmarSagoo 🔬 Lab: MakeScraper / MakeUtility (get unblocked by the TA!) |
- | Mon, July 5 | No Class - Independence Day |
15 |
Wed, July 7 | TBD |
16 |
Fri, July 9 | Delve into Debugging |
17 |
Mon, July 12 | Benchmarking & Testing |
18 |
Wed, July 14 | Documentation & Deployments |
19 |
Fri, July 16 | Final Presentations |
We will be using Gradescope this term, which allows us to provide fast and accurate feedback on your work. All assigned work will be submitted through Gradescope, and assignment and exam grades will be returned through Gradescope. As soon as grades are posted, you will be notified immediately so that you can log in and see your feedback. You may also submit regrade requests if you feel we have made a mistake.
Your Gradescope login is your Make School email, and your password can be changed at https://gradescope.com/reset_password. The same link can be used if you need to set your password for the first time.
Assignments must be submitted to Gradescope by 11:59PM PST on the date due.
📚 Assignment | 🔗 Criteria | 📆 Due Date |
---|---|---|
Tour of Go | Done in Class | June 7, 2021 (Monday) |
Static Site Generator | MVP v1.1 / v1.2 |
MVP: June 18, 2021 (Monday) v1.1 / v1.2: June 21, 2021 (Friday) |
Web Scraper | Requirements | July 7, 2021 (Tuesday) |
Blog Post | Rubric | July 16, 2021 (Friday) |
MakeUtility Project & Presentation |
Requirements | July 16, 2021 (Friday) |
- Late assignments that are submitted more than 5 days (120 hours) after the deadline will be given a 25% late penalty.
- The absolute last day to submit any assignment will be Friday, July 16 at 11:59 PM.
If you require accommodations or have extenuating circumstances such as prolonged illness, please contact your instructor to request an extension.
To pass this course you must meet the following requirements:
- Complete the tutorial, deliverables, final project, and final presentation as assigned in class and described in the sections below.
- Actively participate in class and abide by the attendance policy.
- Make up all classwork from all absences.
Complete the tutorial assigned in class; assessed via graded warmup during week two.
Demonstrate confidence writing and speaking about Go topics by writing a 500+ blog post on a language feature of your choice.
Your blog post must be accessible to the general public to earn credit; do not submit draft posts.
Your grade will be determined via the Make School Blog Post Rubric. You must earn a score of 2.5 or higher to pass.
Complete the final project according to the associated project rubric.
The delivery of a live or pre-recorded presentation is required to pass this course. Presentations will be delivered on our final day of class.
Your three to five minute presentation should focus on the experience you gained and lessons you learned while implementing one of the three Challenges in this course.
Your final presentation will be evaluated based on the Make School Presentation Rubric. You must earn an average of 2.5 on the rubric to pass.
New version of Go released? No problem! Run the following command to install the latest version of Golang on your Mac or Linux system:
git clone https://github.com/udhos/update-golang
cd update-golang
sudo ./update-golang.sh
- make.sc/library
- Gophercises: Real-world side projects with video tutorials!
- TutorialEdge - Golang Repository: Mini-tutorials to introduce and enhance your Golang knowledge.
- YouTube - Todd Mcleod: Videos to reinforce Golang concepts and techniques that we cover in class.
- Echo Framework: Documentation for Echo, a high performance, extensible, minimalist Go web framework.
- GORM: The fantastic ORM library for Golang.
Any additional resources you may need (online books, etc.) can be found here. You can also find additional resources through the library linked below:
- Program Learning Outcomes - What you will achieve after finishing Make School, all courses are designed around these outcomes.
- Grading System - How grading is done at Make School
- Diversity and Inclusion Statement - Learn about Diversity and Inclusion at Make School
- Academic Honesty - Our policies around plagiarism, cheating, and other forms of academic misconduct
- Attendance Policy - What we expect from you in terms of attendance for all classes at Make School
- Course Credit Policy - Our policy for how you obtain credit for your courses
- Disability Services (Academic Accommodations) - Services and accommodations we provide for students
- Online Learning Tutorial - How to succeed in online learning at Make School
- Student Handbook - Guidelines, policies, and resources for all Make School students