Software Engineering

Software Engineering

how to do: higher quality software

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.

seng-quiz.png

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

Did you find this article valuable?

Support Software Engineering by becoming a sponsor. Any amount is appreciated!