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.
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.
- 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
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) |
None
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.
- VS Code (https://code.visualstudio.com/)
- Docker (https://www.docker.com/)
- Github CLI (https://cli.github.com/)
Regular course work and homework assignments will be provided throughout lessons. Though varied, the assignments will generally consist of:
- Reading assigned chapters from course books.
- Completing one or more coding exercises to be submitted on Github or by email to instructor.
- Completing pop quizzes and tests
Week | Topics |
---|---|
01 |
Course introduction and tools tutorial Introduction to Computing
|
02 |
Essentials of Programming Languages, Week 1
|
03 |
Essentials of Programming Languages, Week 2
|
04 |
Programming Patterns
|
05 |
Working with Data
|
06 |
Understanding Distributed Systems
|
07 |
Dealing with User Interfaces
|
08 |
Building application systems
|
09 |
Capstone project (Week 1)
|
10 |
Capstone project (Week 2)
|
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.