Guide | Slack | Office Hours | Shortlink | Tracker | Request 1-on-1 |
---|---|---|---|---|---|
@droxey | #bew2-5-go | M/T/Th 1:00 - 1:30pm (Golden Gate) T/Th 3:30 - 4:30pm (Tea Tree) |
make.sc/bew2.5 | Link | Link |
- Course Description
- Course Specifics
- Prerequisites
- Learning Objectives
- Schedule
- Class Assignments
- Evaluation
- Attendance
- 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. 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
- Identify the strengths of Go, and describe the architectures where Go could be best utilized.
- Design, implement, and deploy command line interfaces, APIs, and bots in Go.
- Compare and contrast different design patterns and the use cases in which they best fit.
Course Dates: Tuesday, January 22 – Thursday, March 7, 2019 (7 weeks)
Class Times: Tuesday and Thursday at 1:30–3:20pm (12 class sessions)
Class | Date | Topics |
---|---|---|
1 | Tuesday, January 22 | Lesson 1: Intro to Go |
2 | Thursday, January 24 | Lesson 2: Anatomy & Architecture of Well Crafted Go Apps |
3 | Tuesday, January 29 | Lesson 3: Command Line Applications in Go |
4 | Thursday, January 31 | Lesson 4: Solving Problems with Go |
5 | Tuesday, February 5 | Lesson 5: APIs in Go |
6 | Thursday, February 7 | Lesson 6: Concurrency and Goroutines |
7 | Tuesday, February 12 | Lesson 7: Go Design Patterns |
8 | Thursday, February 14 | Lesson 8: Integrations and Bots |
- | Tuesday, February 19 | President's Day (Observed) |
9 | Thursday, February 21 | Lesson 9: Benchmarking, Testing, & Documentation |
10 | Tuesday, February 26 | Lesson 10: Go Microservice Deployment Strategies |
11 | Thursday, February 28 | Lesson 11: TBA |
12 | Tuesday, March 5 | Lesson 12: TBA |
13 | Thursday, March 7 | Final Exam |
- List (with links) of all course-level assignments (i.e. tutorials, challenge sets, contractor project, custom projects, etc)
- Under each assignment link the rubric used to evaluate it or describe how it is evaluated.
- Projects should be linked to a project page which has a description & requirements.
Tutorials are to help you get started in a topic. They are graded on completion only.
All projects will 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.
Academic Honesty
Accommodations for Students
Attendance Policy
Diversity and Inclusion Policy
Grading System
Title IX Policy
Program Learning Outcomes