Skip to content

Latest commit

 

History

History

syllabus

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Code Differently Cohort 2024 Q4

Instructor

Anthony D. Mays (@anthonydmays)

Anthony is a software engineer with over 23 years of experience across finance, e-commerce, enterprise consulting, and data visualization & analysis. Before becoming a full-time entrepreneur via his firm Morgan Latimer Consulting, he spent 8 years at Google where he became a Senior Software Engineer.

Website Github LinkedIn Twitter YouTube

Course Description

Software engineering continues to be one of the hottest careers in tech. Even with advances in machine learning and AI, the need for skilled engineers continues to grow. In this course, you will learn the foundations of digital computing and programming to understand how to build complex software systems at scale. You will also learn how modern collaborative software development takes place within organizations and teams through practical application.

Objectives

  • Learn how to write software using multiple programming languages
  • Understand the principles of good code design
  • Understand the basic principles of system design
  • Develop competency in working across all layers of a distributed software system
  • Learn the essential elements of the software development lifecycle (SDLC)
  • Become familiar with software development tools
  • Develop analytical and problem solving skills
  • Grow competency in reading documentation and conducting research
  • Engage in collaborative software development practices

Books

The course will feature required reading from the following selection of books. Note the edition for each.

Abbreviation Title
HFJ Head First Java: A Brain-Friendly Guide 3rd Edition
PIE Programming Interviews Exposed (4th Edition, Wrox)
LWD Learning Web Design: A Beginner's Guide to HTML, CSS, JavaScript, and Web Graphics

Slides

You can find the full lecture presentation slides at ml.tips/24q3-slides.

Tools

Throughout the course, we will use the following tools for most assignments unless otherwise directed. Please familiarize yourself with these tools in advance to make for smoother adoption.

Activities

Regular course work and homework assignments will be provided throughout lessons. Though varied, the assignments will generally consist of:

  1. Completing one or more coding exercises to be submitted on Github or by email to instructor.
  2. Watching assigned videos and reading.
  3. Completing pop quizzes and tests.

Course schedule

Week Topics
01 Course introduction and tools tutorial
Developer Workflow
  • Git Fundamentals
  • IDE Fundamentals
  • Navigating the Terminal
02 Software Engineering Foundations
  • How Computers Work
  • How To Be A Great Software Engineer
  • Software Development Lifecycle
03 Programming Languages, Week 1
  • Statements and Variables
  • Control Flow
  • Functions
04 Programming Languages, Week 2
  • Data Types
  • Libraries and APIs
  • Data Structures: Strings & Arrays
05 Programming Languages, Week 3
  • Data Structures: Stacks, Queues, Linked Lists
  • Data Structures: Maps & Sets
  • Exceptions and Error Handling
06 Software Design
  • Test Driven Development
  • OOP Principles, Part I
  • OOP Principles, Part II
07 Software Design - Project Week
08 Frontend Programming, Week 1
  • Computer Languages
  • Web FE: Intro to HTML, CSS, & JS
  • Web FE: JavaScript Deep Dive
09 Frontend Programming, Week 2
  • Introduction to React
  • Web APIs Using Rest
  • Web FE: Integrating with the Backend
10 Capstone Project, Week 1
  • Introduction to Databases
  • Capstone Project
11 Capstone Project, Week 2
12 Capstone Project, Week 3

Academic Integrity

Students are absolutely encouraged to leverage learning resources outside of official course materials to enhance understanding and complete assignments. This includes use of tools like forums, search engines, or Large Language Models (LLM) such as Open AI ChatGPT, Google Gemini, and GitHub Copilot for example.

Generally speaking and unless otherwise stated by the instructor, students are also allowed to work together to collaboratively problem solve and come up with solutions.

That said, all students must credit provide credit for anything they did not generate themselves. This includes code, documentation, quotes, multimedia items used for presentations, and etc.

Any use of materials without providing proper credit will be considered cheating and will result in disciplinary action.