Table of contents
You are probably a software developer, or you want to be and maybe you are not formally trained but you want to create better software. In this case, you are now in the right place.
What is it?
First of all Engineering: is a scientific field that involves taking the scientific understanding of the world and using it to invent, design, and build machines, mechanisms, processes or devices to solve problems and achieve a goal."
We can apply some of the Engineering methods to software production. In this case, we can say this definition: "Software engineering is the systematic design and development of software products and the management of process required for software production. Its primary objective is the production of higher quality programs that meet specification, on time and in the budget"
But why?
As a software developer, you can work independently on your project. You learn a programming language and go ahead programming by yourself. To work on a larger project you need a team. To get a job, you need to learn more than a programming language. That is you need to learn some Software Engineering.
Roadmap
In my course, I cover diverse topics of Software Engineering and then I have a quiz that you can take to consolidate your skills and show other people you are qualified. I will endorse you on Linkedin if you follow my course and pass my quiz. Next is a list of topics I will try to cover. This is part of the Sage-Code Laboratory research and teaching program.
Computer Science
Logic & Boolean algebra
Numeric systems
Data structures
Algorithms
Operating systems
Database design
Programming languages
Programming paradigms
Structured programming
Aspect-oriented programming
Object-oriented programming
Event-oriented programming
Functional programming
Engineering Principles
Software design patterns
Software quality attributes
Software architecture
Software life cycle
Front-End Development
HTML
CSS
JavaScript and its frameworks
Back-End Development
Server-side programming languages (Ruby, Python, PHP, Node.js)
Web frameworks (Ruby on Rails, Express.js, Django)
Databases (MySQL, PostgreSQL, MongoDB)
Mobile Development
Android app development
iOS app development
Hybrid app development (React Native, Ionic)
Artificial Intelligence
Data preprocessing
Machine learning
Deep learning
Natural language processing
Computer vision
Artificial reasoning
System Development
Operating system
Bash command line
Artificial languages
Crafting compilers
Domain-specific languages
DevOps
Continuous integration and deployment
Infrastructure as code
Containerization (Docker, Kubernetes)
Cloud services (AWS, Azure, GCP)
Computer architecture
Computer networks
Data storage optimization
System Design
System design principles
Computer architecture design
Microprocessor architecture
Memory systems
I/O systems
Digital Signal Processing
Digital filters
Control systems
Security Engineering
Network security
Web application security
Cryptography
Security analysis and testing
Project Management
Planning and scheduling
Budget management
Resource allocation and management
Risk management
Team management
Processes management (Agile, Scrum, Waterfall)
Test planning (unit testing, integration testing, acceptance testing)
Quality assurance (code reviews, code analysis, testing strategies)
Contribution
These articles are not perfect and are provided as is by me. I'm not a native English speaker and I do many typos and grammatical mistakes. Sage-Code is a GitHub organization you can join to contribute to my tutorials. You need to be a software instructor or developer to modify the articles, fix errors or create new articles and publish them.
Clone this: GitHub Repo
If you are not an instructor or developer in the Sage-Code organization you can still make a fork and PR to contribute. Before you make a PR make sure the HTML file is valid. This is a great way to increase your GitHub reputation as an open-source developer.
Join Discord
This course is available on Discord. We connect to a voice channel and I share my screen working or presenting Software Engineering topics. I use diverse programming languages and tools you can learn after you read my articles.
Join: discord invitation
Take the quiz
You can take the quiz now or later but you need a Google account to do so. We do not publish your results but you can ask for feedback on Discord if you take less than 100 points. You need at least 50 points to be considered a Sage-Code developer.
Take: my quiz
You can post comments below and ask questions or provide feedback about your experience learning Software Engineering. We are curious if our course was useful for you.
Follow up
In the future, we will improve our articles, stream and record videos. Activate Twitter notification or watch the Twitch calendar to be notified when I stream live so you can participate in chat.
Disclaim: Please note that this is not an exhaustive course about Software Engineering but just an overview, and there are many more sub-domains and topics that we study in our course.
Free course: Software Engineering