Skip to content

Latest commit

 

History

History
58 lines (44 loc) · 4.93 KB

18652.md

File metadata and controls

58 lines (44 loc) · 4.93 KB

18-652: Foundations of Software Engineering

Category Difficulty
Project 8
Exams 4

The course is taught by Professor Cécile Péraire and Professor Hakan Erdogmus. It is the core course of MS in Software Engineering program. The course focuses on software engineering practices and has a semester-long course project. The course is project-based, which intends to give you a good understanding of how software engineer works. To be specific, you will learn lots of practices for software engineering, which then you will apply to your group project. It is going to involve a lot of collaboration. The requirements are given every fortnight. It is going to be very time consuming. This course will provide you a good foundation to take Software Engineering Methods and Software Design and Architecture in your future semesters. Having good communication skills and time will make your life easier. :)

Topics covered

  • Object-oriented technology
  • Object-oriented analysis and design
  • Requirements
  • Software architecture
  • Design patterns
  • Software testing
  • Technical development practices
  • Code quality: code reviews and static analysis
  • Software project planning and estimation
  • Software development methods
  • Software engineering methods
  • UML
  • Object Oriented Programming
  • Unit testing
  • Version Control
  • CI/CD
  • Pair programming
  • Requirements analysis

Course logistics

There are (videos or readings) and a quiz every week, a Final, and a group project. There will be a fortnight that you will have to work on your own feature. The project is a typical web-based application. You need to know JavaScript, NodeJs, and databases.

What to expect

  • Ramp-up Project: There is a small individual project required before the start of the semester. The project is mandatory in order to be enrolled in the course. You are required to build a FSE chat room and get yourself familiar with the tech stacks to be used in the later project. Tech stacks requirements: ES6, Express (a node.js backend framework), frontend frameworks are forbidden (libraries are allowed).

  • Project: The requirements of the projects are almost fixed: you are required to build a web service (Emergency Social Network) in a group of 3-5 (almost random team placement). There are 5 iterations in the project and each iteration requires 2 demos with the TA. Different software engineering practices are required in each iteration. The project takes up a large part of the grade (the percentage might be different every year) and this grade will be peer-evaluated.

  • Video Lectures: The course takes a flipped classroom format, which means that you are required to watch the corresponding video lectures before the in-class live session.

  • In-Class Quizzes: There is a quiz at the beginning of almost every class to test the material in the video lectures. Also attendance will be taken in every class.

  • Final Exam: There is a final exam that contains some practical problems that are different from quizzes. Please pay attention to in-class activities that cover the skills necessary to complete the problems.

How to do well

  • The project takes a huge part of this course, so arrange yourself enough time and be proactive for the project. Also remember to be professional as the random team placement will make the team's working environment similar to the real work place.
  • Prepare as much as you can in the ramp-up project. The timeline for the course project is pretty tight and it helps to learn the required tech stacks before the course start.
  • Don't miss any part of the course (video lectures, quizzes, activities...).
  • Attend every class. Make sure you do every quiz. There are quizzes in the class and outside the class.
  • Prepare your mind to work in team. Try to develop positive relationships with your teammates. Have empathy for your teammates. There will be a lot of decisions to make in the project so there can be disagreements and frustration, so it is better to prepare your mind to be willing to collaborate with others.
  • Try to keep your code clean because requirements will be more and more difficult, so if your code is unorganized it will be twice as heavy.
  • Around Week 7, there will be a paired programming project, where you are not allow to write code by yourself for your group project. You need to partner with one of your teammates, and perform pair programming.
  • Around Week 9, you will have to design and implement your own feature, which will be graded individually. There are a couple of challenges here. Your teammates are not allowed to help. Several people will work on the same code base which is extending divertly, because everyone has their own features. Later on you also need to merge the diverging code back together.
  • The Final exam will be about topics you learn in class, lots of software design, and lots of UML drawing.
  • Tip: Be nice with your TA. They will have to review your project every week.