CS3601 program

Fundamentals of Software Engineering

This course provides a comprehensive introduction to software engineering principles, methodologies, and best practices for developing high-quality software systems. It covers the software development life cycle (SDLC), software process models, requirement engineering, system design, software testing, and project management. Students will learn about agile methodologies, object-oriented design, and software quality assurance (SQA) to develop scalable and maintainable software systems.

–
Average rating
Rate a teacher to start
6
ECTS
180
hours in a term
4
class hours a week
From the Fall 2025 syllabus

What you will learn

  • •Describe SW engineering principles, common SW architectural styles, processes involved in engineering a SW necessary to produce software solutions.
  • •Analyze a problem, and produce SW system design with common design patterns, produce documentations (CRC / UML), and interpret existing documentations.
  • •Implement and evaluate quality assurance practices, including test-driven development, test classifications, test adequacy evaluation, code improvement / refactoring, code smell detection, and bug finding tools.
  • •Explain methods of software project management such as scheduling, size estimation, productivity measurement in agile environments, ethical and equitable software development.
  • •Use tools and perform best practices in collaboration in SW projects including software version control, bug tracking, code reviews, continuous development (DevOps) pipelines, and container-based app deployment.

How it is graded

30%
Assignment (Homework)
Weeks 3-7, 10-14
30%
Midterm Exam
Week 8
40%
Final Exam
Week 16

Workload

180 hours in a term, about 12 a week
In-Class Time 56 hIndependent Study 56 hAssignments 64 hExaminations 4 h

Week by week

Books

Software Engineering at Google: Lessons Learned from Programming Over Time
Titus Winters, Tom Manshreck and Hyrum Wright
required
Fundamentals of Software Architecture
Mark Richards, Neal Ford
recommended
Refactoring: Improving the Design of Existing Code
Kent Beck, Martin Fowler
recommended

Where it fits

NeedsIntroduction to ProgrammingObject Oriented Programming

Requirements come from syllabi. Check with your advisor.

Tools

nodejswebstormvscodereactvueExpress.jsGitHub

Who teaches it

–Qobiljon Toshnazarov
Qobiljon Toshnazarov
Office UCA 218, Mondays 14:00–18:00 (please email and notify before visiting)

Files

syllabus
(2025 Fall) CS360 Fundamentals of Software Engineering0
Fundamentals of Software Engineering · Fall 2025
Open

What Anonymous says

Anonymous posts, unverified. Press F never edits them and every card links to the original.