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 |
---|---|
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 |
You can find the full lecture presentation slides at ml.tips/24q3-slides.
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:
- Completing one or more coding exercises to be submitted on Github or by email to instructor.
- Watching assigned videos and reading.
- Completing pop quizzes and tests.
Week | Topics |
---|---|
01 |
Course introduction and tools tutorial Developer Workflow
|
02 |
Software Engineering Foundations
|
03 |
Programming Languages, Week 1
|
04 |
Programming Languages, Week 2
|
05 |
Programming Languages, Week 3
|
06 |
Software Design
|
07 | Software Design - Project Week |
08 |
Frontend Programming, Week 1
|
09 |
Frontend Programming, Week 2
|
10 |
Capstone Project, Week 1
|
11 | Capstone Project, Week 2 |
12 | Capstone Project, Week 3 |
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.