Guide | Slack | Office Hours | Shortlink | Tracker | 1-on-1 |
---|---|---|---|---|---|
@droxey | #bew2-5-go |
W 11:30 - 1:30pm (Mezzanine) | make.sc/bew2.5 | make.sc/trackbew2.5 | Link |
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. Known best for it's 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, Medium, and more!
Weeks to Completion: 7
Total Seat Hours: 37.5 hours
Total Out-of-Class Hours: 75 hours
Total Hours: 112.5 hours
Units: 3 units
Delivery Method: Residential
Class Sessions: 13 classes, 7 labs
- 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.
- Examine benchmarks to determine how to improve the speed and readability of a Golang project.
- Gain experience deploying APIs and bots to production.
Course Dates: Monday, October 21 – Wednesday, December 11, 2019 (7 weeks)
Class Times: Monday and Wednesday at 3:30–5:20pm (15 class sessions)
| # | Topic | Assignment Due | |:-----:|---------------------------| ------------------------------------------- |:--------------:| | 1 | Lesson 1: Intro to Go || | 2 | Lesson 2: Tutorial Launch || | 3 | Lesson 3: Architecture of Well Crafted Go Apps || | 4 | Lesson 4: Interacting with APIs in Golang || | 5 | Lesson 5: APIs, Middleware, & You || | 6 | Lesson 6: Go Relational with GORM || | 7 | Lesson 7: Concurrency & Goroutines || | 8 | Lab Day: Challenges / MakeUtility Project Kickoff || | 9 | Lesson 9: Benchmarking & Testing | | | 10 | Lesson 10: Go Design Patterns || | 11 | Lesson 11: Deployment Strategies | 15 Challenges @ 11:59pm | | 12 | Demo Day: MakeUtility Project | 3 Min Demo @ 1:30pm | | 13 | Final Exam | Project @ 11:59pm |
Tutorials are to help you get started in a topic. They are graded on completion only.
- Complete AT LEAST 15 Go Track Challenges, committed to a public GitHub repository.
Go above 15 challenges to earn a special holographic droxey sticker at the end of the term!
- MakeUtility Project: Architect, implement, deploy, and integrate a helpful utility written in Golang.
- MakeUtility Rubric: Use this rubric to assess your project before turning it in.
All projects require a minimum of 10 commits, and must take place throughout the entirety of the course.
- Good Example: 40+ commits throughout the length of the course, looking for a healthy spattering of commits each week (such as 3-5 per day).
- Bad Example: 10 commits on one day during the course and no others. Students who do this will be at severe risk of not passing the class.
- Unacceptable Example: 2 commits the day before a project is due. Students who do this should not expect to pass the class.
We want to encourage best practices that you will see working as a professional software engineer. Breaking up a project by doing a large amount of commits helps engineers in the following ways:
- It's much easier to retrace your steps if you break your project/product/code up into smaller pieces
- It helps with being able to comprehend the larger problem, and also will help with debugging (i.e. finding exactly when you pushed that piece of broken code)
- It allows for more streamlined, iterative communication in your team, as it's much easier to hand off a small change to someone (updating a function) than a huge one (changed the architecture of the project)
Through this requirement, we encourage you to think about projects with an iterative, modular mindset. Doing so will allow you to break projects down into smaller milestones that come together to make your fully-realized solution.
Projects are a chance to build and ship code based on class concepts. Many are open ended allowing you to be creative and to have individual work for your portfolio.
To pass this course you must meet the following requirements:
- Complete all required tutorials
- Pass all projects according to the associated project rubric
- Pass the final summative assessment >=75%
- Actively participate in class and abide by the attendance policy
- Make up all classwork from all absences
Just like any job, attendance at Make School is required and a key component of your success. Attendance is being onsite from 9:30 to 5:30 each day, attending all scheduled sessions including classes, huddles, coaching and school meetings, and working in the study labs when not in a scheduled session. Working onsite allows you to learn with your peers, have access to support from TAs, instructors and others, and is vital to your learning.
Attendance requirements for scheduled sessions are:
- No more than two no call no shows per term in any scheduled session.
- No more than four excused absences per term in any scheduled session.
Failure to meet these requirements will result in a PIP (Participation Improvement Plan). Failure to improve after the PIP is cause for not being allowed to continue at Make School.
- Practical Go: Real world advice for writing maintainable Go programs.
- Go Standard Project Layout
- Checklist for Go Projects: Lists everything a developer should do when starting a Go project.
- 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.
Academic Honesty
Accommodations for Students
Attendance Policy
Diversity and Inclusion Policy
Grading System
Title IX Policy
Program Learning Outcomes