Skip to content

Latest commit

 

History

History

syllabus

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 

Code Differently Cohort 2024 Q1

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
CC Code Complete (2nd Edition, Microsoft Press)
CODE Code: The Hidden Language of Computer Hardware and Software (2nd Edition, Microsoft Press)
HF Head First Design Patterns (2nd Edition, O'Reilly)
PIE Programming Interviews Exposed (4th Edition, Wrox)
SEG The Software Engineer's Guidebook
TPP The Pragmatic Programmer (20th Anniversary Edition, Pearson Addison-Wesley)

Prerequisites

None

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. Reading assigned chapters from course books.
  2. Completing one or more coding exercises to be submitted on Github or by email to instructor.
  3. Completing pop quizzes and tests

Course schedule

Week Topics
01 Course introduction and tools tutorial
Introduction to Computing
  • Digital computing and alternative number systems (base 2 and 16)
  • Modern computer architecture
  • The role of software engineers
02 Essentials of Programming Languages, Week 1
  • Statement, variables, and functions
  • Understanding data types
  • Custom data types using objects and classes
03 Essentials of Programming Languages, Week 2
  • Control flow with conditionals, loops
  • Error handling
  • Lists and collections
  • Using libraries and APIs
04 Programming Patterns
  • Object-oriented programming & SOLID principles
  • Constructing clean code
  • Design patterns
  • Functional programming
05 Working with Data
  • Dealing with I/O
  • Introduction to data structures
  • Understanding databases
  • Using SQL to query databases
06 Understanding Distributed Systems
  • How the Web Works
  • Servers and clients
  • Using Web APIs
  • Building complex systems
07 Dealing with User Interfaces
  • Markup languages (HTML, CSS, Markdown)
  • Event-driven UI
  • Data binding
  • Forms and validation
08 Building application systems
  • Collaborative software engineering
  • Tools of the trade
09 Capstone project (Week 1)
  • Collaborative software engineering
  • Applying principles learned throughout the course
10 Capstone project (Week 2)
  • Collaborative software engineering
  • Applying principles learned throughout the course

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.