Software Engineering course
The course has a theory part and a project part. The theory part covers current topics that are useful in professional life and explains what the project requires: the software development life cycle, planning and requirements analysis, REST APIs and OpenAPI, microservices, teamwork with Git, Docker, CI/CD, caching and message queues.
In the project part, teams develop a database-driven web application that is actively used on the internet, following the phases of the software development life cycle. The instructor guides the teams as a mentor and assesses them as the customer. There is no technology restriction; each team may use any programming language and framework.
Project phases:
The midterm covers the Analysis and Design phases; the final covers Development, Testing, Documentation and Deployment. Some items are done and graded as a team, others individually.
On successful completion, students will be able to:
Teams: A team has at most 5 members; there is no lower limit, but at least 3 is recommended. Each team chooses a leader, and every team builds a different project.
Role of the instructor: The instructor guides you as a mentor and grades you as the customer. Projects are graded with the assessment template; some phases may be assessed in class.
Project approval: The team leader gets the project idea approved by the instructor, on Discord or in person, and then submits the team form.
Technology: There is no technology restriction; you may use any programming language and framework.
Individual and team work: Some parts of the project are individual and some are team work. In individual parts everyone commits from their own GitHub account; accounts with no visible commits receive no points for that part. Team parts may be committed by the leader or any member. Everyone works on their own branch and the leader merges into main.
Repository: The README follows the YazMuh template exactly; submissions that do not follow it are not assessed.
Requirements: Requirements are shared equally among the members, with a minimum total of 10 for one person, 16 for two, 21 for three, 24 for four and 30 for five. Every member has at least one create (POST), update (PUT), list (GET) and delete (DELETE) requirement, and every requirement maps to an API method. Names are short and state an action (e.g. Sign up, Log in); descriptions are clear and free of jargon and abbreviations. Requirements are approved in person before being added to GitHub. An additional AI-based requirement earns extra points.
Running on a domain: The REST API and the front end must run on a domain; work that does not run there receives no points, even with other evidence.
Videos and tests: Each member adds a YouTube video at the top of their own page: name, assigned requirements and how many were completed, then each requirement tested successfully. REST API tests use a Postman collection on the domain, exported as JSON into the member's folder in the repository.
Focus: Do not focus on passing the course or on how many points you get. Focus on building good projects that will serve as references in your career and make a difference on your CV.