đź’» Software Engineering (Programming)
I want to write software to make physical things move. I really like Robotics and general engineering. That’s why I chose software engineering at Waterloo, and not computer science.
Current focus: becoming a good and fast problem-solver through Leetcode and Competitive Programming.
Courses
Go to Waterloo Software Engineering for things specific to my program + links to course notes.
- CS137 C
- CS138 basic C++
- CS241E Compiler + Scala
- CS240 data structures
- CS247 more advanced C++
- CS348 SQL
Fundamentals
Concepts
- Garbage Collector
- Virtual Machine
- Application Programming Interface
- Design Pattern
- Adapter Design Pattern
- Variable
- Over-The-Air Programming
- Computer Network
- Communication Protocols
- Kolmogorov Complexity
Programming Languages
- Compiled vs. Interpreted Language
- C Language
- Python
- Processing
- C++
- Swift
- Unity
- C-Sharp
- Assembly
- SQL
- Scala
Tools
Hardware
Programming Paradigms
Important Topics (AI / DS / Web)
DevOps
Cybersecurity
Software Shortcuts
- Terminal
- VS Code
- Vim
- PyCharm
- COMSOL
- My personal MY Programming Style Guide
- Software Project
- A great roadmap for learning new stuff: https://roadmap.sh/roadmaps
Miscellaneous
- Is Software Engineering a branch of “engineering”? https://www.hillelwayne.com/post/are-we-really-engineers/
What makes good code?
Good code should be clear to understand. Optimized for readability and maintainability. See more in my MY Programming Style Guide.
Related
How to get started programming?
For me, I want to be one of the best software engineers in the world. I am giving myself until the end of university. Right now, I’m very focused on building a strong foundation, which means I am really getting my fundamentals down. Understand how code runs and compiles, from transistor level to how apps are built level. This will help me become a better problem solver and programmer.
At first, I learned programming for the sake of using it to build something. Nowadays, I learn programming as an end in itself.Â
Languages are just tools. Frameworks are tools. Build intuition for how things are built and why they are built. Teaching yourself how to use a tool is always the easy part. But the true geniuses are the ones that build the tools.
- I taught myself through courses on Udemy, Edx, Coursera, and YouTube.Â
- Start doing small projects and incrementally make them harder. My YouTube page is a reflection of that.
Some languages I recommend and enjoy: Python, C++, C. There’s this roadmap I found a while back to learn anything: https://roadmap.sh/roadmaps. Might be helpful to you. This guy also makes some good robot tutorials: https://www.youtube.com/@ArticulatedRobotics
Feel free to check out my website too, I have links to all sorts of pages: https://stevengong.co. You’ll be able to explore my brain.
Will programming disappear?
Some interesting thoughts from the Clean Code book:
- Code is really the language in which we ultimately express the requirements. We may create languages that are closer to the requirements. We may create tools that help us parse and assemble those requirements into formal structures. But we will never eliminate necessary precision—so there will always be code.