← HomeTR
UndergraduateSpring 2028

Software Engineering

Software Engineering course

Language
Turkish
Contact
Project ideas and questions through the team leader, on Discord or in person; announcements on this platform

Course description

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:

  • Analysis: forming the team and choosing the project, requirements analysis (business, user, functional and non-functional requirements), project plan
  • Design: use case diagram and use case scenarios, database diagram
  • Development: user interface design, use of a front-end framework, REST API (design with OpenAPI, implementation and Postman tests), back end, use of Docker
  • Testing: testing the application against the requirements
  • Documentation: user and developer documentation
  • Deployment: putting the application live on its own domain
  • Additional technologies (bonus): extra technologies added to the project

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.

Learning outcomes

On successful completion, students will be able to:

  1. 1Apply the phases of the software development life cycle in a team project
  2. 2Identify and document business, user, functional and non-functional requirements
  3. 3Prepare a project plan and divide the work within the team
  4. 4Design the system with a use case diagram, use case scenarios and a database diagram
  5. 5Design a REST API with OpenAPI, implement it and test it with Postman
  6. 6Build the web interface with a front-end framework and connect it to the REST API
  7. 7Work as a team with Git using branches and merges
  8. 8Containerize the application with Docker and explain and apply CI/CD
  9. 9Explain scalability techniques such as caching (Redis, Memcached) and message queues (RabbitMQ, Kafka)
  10. 10Deploy the application and prepare user and developer documentation

Weekly schedule

WeekTopicReadings and work
1Course introduction; forming teams and choosing a projectChoose a leader, get the project idea approved, submit the team form
2Software engineering and the development life cycle; planningProject plan
3Requirements analysis: business, user, functional and non-functional requirements, FURPS+Requirements in the README template on GitHub
4Design: use case diagram and use case scenarios
5Database designDatabase diagram
6APIs, JSON and REST; OpenAPI and Swagger; microservicesREST API design in OpenAPI (YAML)
7Working as a team with Git: branches, commits, mergingMidterm phases (Analysis and Design) completed
8Midterm week
9Building the REST API and testing it with PostmanREST API and back end on the domain; test video and Postman collection
10Front end: user interface design and a front-end frameworkFront end connected to the API on the domain; test video
11Docker: containers, Dockerfile, docker-composeFront end and REST API running on Docker
12CI/CD: concepts and Jenkins pipelines; testingJenkinsfile and a video showing that all stages work
13Caching: Redis and Memcached; JWT blacklisting with Redis
14Message queues: RabbitMQ and Apache Kafka; documentation and deploymentUser and developer documentation; application live on its own domain

Assessment

40%Midterm60%Final
Midterm100 points in total
  1. Analysis
    Team formationTeam3 pts
  2. Project selectionTeam2 pts
  3. Requirements analysisTeam20 pts
  4. Project planTeam5 pts
  5. Design
    Use case diagramTeam25 pts
  6. Use case scenarios35 pts
  7. Database diagramTeam10 pts
Final100 points in total
  1. Development
    User interface design15 pts
  2. Use of a front-end frameworkTeam10 pts
  3. REST API25 pts
  4. Back-End20 pts
  5. Use of DockerTeam5 pts
  6. Testing
    Testing10 pts
  7. Documentation
    User documentation5 pts
  8. Developer documentation5 pts
  9. Deployment
    DomainTeam5 pts
  10. Additional technologiesTeamBonus+15 pts

Resources

Course policies

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.