Giter VIP home page Giter VIP logo

awesomezaidi / bew-2.5-strongly-typed-ecosystems Goto Github PK

View Code? Open in Web Editor NEW

This project forked from make-school-courses/bew-2.5-strongly-typed-languages

0.0 2.0 0.0 11.32 MB

๐Ÿ’ช 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!

Home Page: https://make.sc/bew2.5

License: MIT License

Shell 3.60% Go 55.85% HTML 21.72% CSS 8.95% JavaScript 9.88%

bew-2.5-strongly-typed-ecosystems's Introduction

BEW2.5: Patterns & Practices in Strongly Typed Ecosystems

Guide Slack Office Hours Shortlink Tracker 1-on-1
@droxey #bew2-5-go T/Th 3:30 - 4:30pm (Tea Tree) make.sc/bew2.5 make.sc/trackbew2.5 Link

Course Description

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!

Course Specifics

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

Prerequisites

Learning Objectives

  1. Design and implement command line interfaces, APIs, and bots in Go.
  2. Identify and describe the architectures wherein the features of Golang could be best utilized.
  3. Build data structures that support unmarshalling JSON retrieved from third-party APIs.
  4. Apply Object Relational Mapping techniques to persist data to relational databases in Go.
  5. Examine benchmarks to determine how to improve the speed and readability of a Golang project.
  6. Gain experience deploying APIs and bots to production.

Schedule

Course Dates: Tuesday, January 22 โ€“ Thursday, March 7, 2019 (7 weeks)
Class Times: Tuesday and Thursday at 1:30โ€“3:20pm (12 class sessions)

# Date Topic Assignment Due
1 Tues, Jan 22 Lesson 1: Intro to Go
2 Thurs, Jan 24 Lesson 2: Tutorial Launch
3 Tues, Jan 29 Lesson 3: Architecture of Well Crafted Go Apps
4 Thurs, Jan 31 Lesson 4: Interacting with APIs in Golang
5 Tues, Feb 5 Lesson 5: APIs, Middleware, & You
6 Thurs, Feb 7 Lesson 6: Go Relational with GORM
7 Tues, Feb 12 Lesson 7: Concurrency & Goroutines
8 Thurs, Feb 14 Lab Day: Challenges / MakeUtility Project Kickoff
- Tues, Feb 19 President's Day (Observed)
9 Thurs, Feb 21 Lesson 9: Benchmarking & Testing
10 Tues, Feb 26 Lesson 10: Go Design Patterns
11 Thurs, Feb 28 Lesson 11: Deployment Strategies 15 Challenges @ 11:59pm
12 Tues, Mar 5 Demo Day: MakeUtility Project 3 Min Demo @ 1:30pm
13 Thurs, Mar 7 Final Exam Project @ 11:59pm

Class Assignments

Tutorials

Tutorials are to help you get started in a topic. They are graded on completion only.

Go above 15 challenges to earn a special holographic droxey sticker at the end of the term!

Projects

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.

Commit Early and Often

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.

Evaluation

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

Attendance

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.

Additional Resources

Make School Course Policies

Academic Honesty
Accommodations for Students
Attendance Policy
Diversity and Inclusion Policy
Grading System
Title IX Policy
Program Learning Outcomes

bew-2.5-strongly-typed-ecosystems's People

Contributors

droxey avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.