Software Development Design and Practice Lab Sessions
Software Development Design and Practice Lab Sessions
Spring 2025
Prepared by: Ersin Onur Erdoğan
In the lab sessions, you will focus on practical aspects of software development design and
practice, learning how to architect, implement, and deploy a structured software project from
scratch. Each lab session will introduce a new design or development aspect, helping you apply
best practices in real-world software engineering.
By the end of the semester, you will have a fully deployed software product with:
1. A structured Git repository
2. A backend with RESTful APIs
3. A frontend interface (simple)
4. Database integration
5. Authentication & security mechanisms
6. CI/CD pipelines for automated testing & deployment
7. Dockerized components
8. Full documentation and a final presentation
You are expected to actively participate, follow the lab instructions, and collaborate with your peers.
Lab sessions focus on practical software development methodologies, ensuring you gain hands-
on experience in designing scalable and maintainable software systems.
Group Requirements
You have to create a group of 3 people for the project until 12th of March and choose a group
representative. Your group representative will be responsible for correspondence and submissions.
Please make sure you choose someone who is accountable. Group representative will send an email
to the lab instructor Ersin Onur Erdogan ([email protected]) including the group
members information (full name, student number, e-mail address for each member; a group
nickname, and project name). Only group representative will send emails and make submissions;
HOWEVER, the contribution of each member MUST be clearly stated. If you have ANY problems
regarding group formation or any disagreement, inform your lab instructor immediately!
Project Requirements
You start your project from scratch as a group and will have built the entire project by the end of the
semester. You are supposed to MAKE SUBMISSIONS EACH WEEK demonstrating your work
progress and you will be GRADED by weekly submissions. You are not asked to suddenly present
your project at the end of the semester without making and interim (weekly) submissions.
AFTER YOUR GROUP FORMATION, you will choose a project to implement either one of the
below or anything like social media platform, e-trading platform, car rental platform or whatever is
accepted ONLY IF the project includes authentication, authorization (role based access to some
features), email verification and notification, CRUD operations, and no bugs!
• Task Management System: Authentication, Email Verification, Create&Assign&Update
Tasks, Role-based Access Control, Email Notification for Task Assignments & Updates
• Learning Management System: Authentication, Email Verification, Course & Study Group
Creation, Document Sharing & Collaborative Notes, Task & Deadline Email Reminders
• Job Application Manager: Authentication, Email Verification, Posting Jobs (Company,
Position, Status, Info), Data Visualization for Job Applications, Email Notifications for
Reminders, Deadlines, etc
• Online Quiz & Exam Platform: Authentication, Email Verification, Quiz Creation with
Multiple-Choice and Open-Ended Questions, Auto-Grading for Multiple-Choice Quizzes &
Exams, Email Notifications for Quiz & Exam Assignment, Grades etc.
• Inventory Management System: Authentication, Email Verification, Product Stock
Management, Supplier and Purchase Order Tracking, Email Notification for New Orders,
Low Inventory etc.
Weekly Schedule
Your weekly schedule is below. Starting from the first week, lab sheets for each week will be shared
with you.
Week 1. Project Setup & Git
Week 2. Object-Oriented Design & UML
Week 3. Implementing Business Logic (OOP & SOLID)
Week 4. APIs & Database Integration
Week 5. Implementing Design Patterns
Week 6. Git Collaboration & Pull Requests Reviews
Week 7. Authentication & Security
Week 8. Unit Testing & Test-Driven Deployment
Week 9. CI/CD & Automated Deployment
Week 10. Code Review & Refactoring & Debugging & Optimization
Week 11. Containerization
Week 12. Final Debugging & Documentation