- Getting Started (IN PROGRESS)
- Introduction to Programming
- College Placement Computer Science Principles
- Computer Science Principles for non-Students
- College Placement Computer Science A in Java
- Foundations of Computer Science with Java
Note: If you are a high school student or teacher, use the "College Placement" version of the program. If you are coming up on your 10-year High School reunion, you should use the Non-Students form.
- Basics of C Programming (IN PROGRESS)
- Basics of Assembly
- Introduction to Systems
- Non-Basic Ideas in C (These ideas are important to Operating Systems)
- Operating Systems
- Networking: A Top-Down Approach
Note: These Courses teach the foundational processes in what makes your computer tick at its very heart. They can be a touch complicated, so if you feel like you want to skip to algorithms for now, feel free.
- Introductions to Algorithms in Java, C, or Python
- Data Structures in Java, C, or Python
- Discrete Structures
Note: All of the courses provided are available in Java, C, and Python. Discrete Structures will be the same regardless of the language.
Trail 4: Math, Math, and Math (But, Like, In context, ya know!?)
- Calculus 1
- Calculus 2
- Calculus 3
- Linear Algebra
- Discrete Math
- Number Theory for Computer Science Folks
- Optimization
- Probability and Statistics
- Combinatorics
- Computational Math for Computer Science Students
Trail 5: Databases and Complex Systems
- SQL and Relational Databases
- Advanced Databases
- Distributed Systems
- Cloud Computing
- Scalable Web Applications
Trail 6: Professional Developer Skills
- Version Control
- Bash Scripting
- The Unix Programming Environment
- Remoting into computers and server access
- Agile for Developers
- Testing, Quality Assurance and CD/CI/Devops for progammers
- Documenting your Code (yes, this is important)
- Basic Security for developers
Trail 7a: GUIs and Graphics
- Intro to Computer Graphics
- 2d Computer Graphics
- 3d Graphics
- Shaders and GPU Programming
- Graphics Libraries
- Ray Tracing
- UX/UI principles for application development
Trail 7b: Web Development (but simplified, this is The Odin Project's domain)
Trail 7c: Mobile App development
Trail 7d: Software App development for desktops
Trail 8: Programming Languages, Theory, and foundations of Computation (Do you want to build a programming language??)
- Foundations of Programming Languages (Functional, OOP, Imperative, and Declarative Programming)
- Formal Language Theory
- Compiler Construction
- Parallel Programming
Trail 10: Preparing for Graduate School, a Job or an Interview
- Writing a Resume, Networking, and Interview Skills
- Technical Writing and Research
Trail 15: The Software Engineering Process in the Working world
- Version Control in the Real World (advanced Git practices for team collaboration)
- Technical Debt and Refactoring (managing and reducing technical debt in large projects)
- Software Maintenance and Evolution (handling long-term software projects, maintaining code quality)
- Understanding Legacy Systems (working with, updating, and improving legacy codebases)
- Cross-team Communication and Collaboration (working in larger, multi-disciplinary teams)
Wish List Trails, Trails that I don't have enough knowledge or experience in to give any education on. When I've learned enough in these areas, I would love to make a Trail for them.
Trail 9: ML/AI and Automation
- Introduction to Machine Learning and AI
- Introduction to Neural Networks
- Introduction to Natural Language Processing
- Introduction to Deep Learning
- Computer Vision
- Misc topics in ML/AI/DL
Trail 11: Cyber Security
- Introduction to Cybersecurity (overview of fundamental concepts)
- Network Security and Encryption (covering encryption protocols, SSL/TLS, VPNs)
- Penetration Testing and Ethical Hacking (introducing ethical hacking and pentesting tools like Metasploit)
- Secure Coding Practices (coding with security in mind, addressing vulnerabilities like SQL injection, XSS)
- Incident Response and Disaster Recovery (methods for identifying, responding to, and recovering from security breaches.
- Cryptography (in-depth study of cryptographic techniques and algorithms)
- Security Auditing and Compliance (learning about frameworks like GDPR, HIPAA, PCI-DSS)
Trail 12: Real-time and Embedded Systems
- Introduction to Embedded Systems (microcontroller programming, sensor integration)
- Real-time Operating Systems (RTOS) (concepts like task scheduling, priority, and preemption)
- Real-Time System Design (focus on system constraints, timing analysis, and control systems)
- Embedded C Programming (specific optimizations and constraints in embedded environments)
- IoT Systems and Networking (how embedded systems work within the Internet of Things ecosystem)
- Hardware Interfacing and Peripheral Management (communicating with external devices through protocols like SPI, I2C)
Trail 13: Developer Operations and Cloud Engineering
- Introduction to DevOps (concepts like CI/CD, infrastructure as code, automation)
- Containerization with Docker and Kubernetes (learn how to containerize applications and deploy them)
- Cloud Platforms: AWS, Azure, and Google Cloud (overview of services provided by major cloud providers)
- Continuous Integration and Continuous Deployment (CI/CD) (automating the testing and deployment process)
- Infrastructure as Code (IaC) (using tools like Terraform, Ansible to manage cloud infrastructure)
- Monitoring and Logging in Cloud Systems (tools and techniques for system observability)
Trail 14: Project Managements and Systems Architecture
- Software Project Management (time management, cost estimation, and resource allocation)
- Agile Methodologies (introduction to Scrum, Kanban, and other agile frameworks)
- Systems Architecture and Design Patterns (understanding software architecture patterns like MVC, microservices)
- Risk Management in Software Projects (identifying, analyzing, and mitigating risks in development)
- Requirements Engineering (capturing and managing functional and non-functional requirements)
- Team Collaboration and Communication (tools and practices to facilitate team collaboration and communication)
Trail 15: Other Programming Languages
- ERPs and their programming languages (This is a legitimate area of software development. If you work for a company that uses SAP or Peoplesoft, you should at least get familiar with one of the two).
- Non-game development C# and the .NET framework
- Ocaml
- Haskell
- Frameworks for Java
- Frameworks for Python
- Historic Programming Languages Overview: LISP, PERL, FORTRAN, and COBOL
Note these Trails will not be created for some time and are so far down on my list it isn't even funny.