/ACS-4210-Strongly-Typed-Languages

💪 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!

Primary LanguageHTMLMIT LicenseMIT

gophers

ACS 4210: Patterns & Practices in Strongly Typed Languages

Table of Contents

  1. Course Description
  2. Prerequisites
  3. Course Specifics
  4. Learning Objectives
  5. Schedule
    1. Online Sessions
    2. Deliverables
  6. Evaluation
    1. Tutorial
    2. Blog Post
    3. Final Project
    4. Final Presentation
  7. Late Assignment Policy
  8. Additional Practice & External Resources

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. 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.

Prerequisites

Course Specifics

Course Delivery: online | 7 weeks
Course Credits: 3 units | 37.5 Seat Hours | 75 Total Hours

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. Gain experience deploying APIs and bots to production.

Schedule

Course Dates: Wednesday March 20 through Wednesday May 8, 2024 (7 weeks)
Class Times: 4:00pm - 6:45pm PST (11 sessions, see below)

Online Sessions

Day Class Topics
01 🆕 Intro to Go / Tutorial Launch
02 🆕 Types & Static Languages
03 Static Site Generators
04 Files & Directories
05 Fast Functionality via 3rd Party Libraries
06 Scraping the Web / Working With JSON
07 Final Project Intro / Pointers
08 Concurrency & Goroutines
09 Benchmarking & Testing
10 Documentation & Deployments
11 Final Presentations

Deliverables

ALL deliverables must be submitted to Gradescope by 11:59PM PST on the date due.

📚 Assignment 🔗 Criteria 📆 Due Date
Tour of Go Done in Class April 8, 2024 (Monday)
Static Site Generator MVP
v1.1 / v1.2
MVP: April 3, 2024 (Wednesday)
v1.1 / v1.2: April 10, 2024 (Wednesday)
Web Scraper Requirements April 22, 2024 (Monday)
Final Presentation Requirements May 08, 2024 (Wednesday)
Final Project Requirements May 12, 2024 (Sunday)
Blog Post Rubric May 12, 2024 (Sunday)

Holidays & Offline Sessions

On the following days this term, our class will NOT be meeting online on Zoom:

  1. Monday, April 01, 2024: Campus Holiday
  2. Monday, April 22, 2024: Lab Day for Final Project

Evaluation

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 Dominican University 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.

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.
  • Make up all activities, classwork, and drills from all absences.
  • Actively participate in class and abide by the attendance policy.

Tutorial

Complete the tutorial assigned for homework on Day 01 and Day 02. Tutorial completion will be assessed via a series of drills, introduced by the instructor and completed in class. All drills must be turned in on Gradescope.

Blog Post

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 ACS Blog Post Rubric. You must earn a score of 2.5 or higher to pass.

Final Project

Complete the final project according to the associated project rubric.

Final Presentation

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 ACS Presentation Rubric. You must earn an average of 2.5 on the rubric to pass.

Late Assignment Policy

The absolute last day to submit any assignment will be Sunday, May 12 at 11:59 PM.

If you require accommodations or have extenuating circumstances such as prolonged illness, please contact your instructor to request an extension.

Additional Practice & External Resources