Skip to main content

Foundations of Software Engineering

 https://cmu-313.github.io/

 

Questions

  • When is a program good enough to ship? Have you built what the customer wanted?
  • Why (and how) does Netflix deliberately and randomly take down its own servers?
  • What can we learn from the Boeing 737 disaster?
  • How did Twitter eradicate the Fail Whale? And what does it have to do with Ruby?
  • How do you get a patch accepted into an open-source project?
  • You can write code. Can you build software?

Overview

Successful software projects require more than just technical expertise. Figuring out what the client wants, collaborating in a team, managing complexity, mitigating risks, staying on time and budget, and determining under various constraints when a product is good enough to be shipped are at least equally important topics that often have a significant human component. 17-313 explores these issues broadly covering the fundamentals of modern software engineering.

Quality and feature conflict Assuming reasonably solid programming skills (including unit testing and code-level design), we will explore the following topics:

  • Process consideration for software development
    (How do avoid problems early? When and how much to design? When and how much to test? When and how to involve the customers? Agile methods...)
  • Requirements elicitation, documentation, and evaluation
    (How to figure out what the customer really wants? Who else has an interest? How can we measure success objectively? How can we reliably document expectations? ...)
  • Design for quality attributes Architecture
    (How can we design a system to be able to scale to millions of users? How can we design security into a system? ...)
  • Strategies for quality assurance, including measurement, inspection, and static and dynamic analysis
    (What quality assurance strategy is best for a given system? What can we automate and when should we keep humans in the loop? How much testing and what kind of testing should we do? What qualities are important to assure beyond functional correctness? Can we evaluate usability, scalability, reliability, performance? How can we statically guarantee the absence of certain security issues? ...)
  • Empirical methods in software engineering xkcd 552
    (How can we measure quality attributes such as performance, security, and reliability? How can we measure how users interact with the system? How can we know whether the difference matters? ...)
  • Time and team management Network plan
    (How to estimate the duration and costs of a project? How to monitor progress and risks to recognize issues early? How to coordinate developers in a team? How to form and develop teams? How to select and motivate team members? How to deal with team dynamics such as social loafing? ...)
  • Economics of software development
    (business models, outsourcing, open source, ...)

This course has a strong technical focus, and includes assignments with and without programming. Assignments also include written components. Students will get experience with team management and modern software-engineering tools. The course puts students on a fast track toward project management positions.

Assignments (mostly done in groups) include:

    FreeCol screenshot
  • An introduction assignment where individual students will learn to engage with an existing code base.
  • A requirements assignment in which each team will interview stakeholders to elicit and document requirements for a software system.
  • An architecture assignment in which teams will train and deploy an ML model using microservices.
  • A project in which each team contributes to an open source project of their choice. This involves identifying an issue in the existing project, understanding the development process of that project and how to contribute, and actually making a contribution such as fixing a bug or adding a feature. Extra credit will be awarded if the contribution is merged into the project.

Logistics and People

Fall 2020, this course is designated as a hybrid offerring.

  • All lectures will take place over zoom.
  • Two recitations are assigned classrooms, when undergraduate in-person instruction is permitted; two are remote-only. Note that only individuals registered for a given in-person recitation may attend that in-person recitation. This is due to strict classroom capacity requirements.
  • If you are assigned to Sections A or B, but know for sure you do not want to attend in person, please contact us to discuss the best way we can accommodate you.

Lectures:

  • Tue/Thu 3:20-4:40 p.m. ET on Zoom
Recitations:
  • Wed 1:20-2:10 p.m. ET in WEH 5403 (Section A)
  • Wed 2:40-3:30 p.m. ET in WEH 5409 (Section B)
  • Fri 1:20-2:10 p.m. ET on Zoom (Section C)
  • Fri 2:40-3:30 p.m. ET on Zoom (Section D)

 

 

Comments

Popular posts from this blog

The Difference Between LEGO MINDSTORMS EV3 Home Edition (#31313) and LEGO MINDSTORMS Education EV3 (#45544)

http://robotsquare.com/2013/11/25/difference-between-ev3-home-edition-and-education-ev3/ This article covers the difference between the LEGO MINDSTORMS EV3 Home Edition and LEGO MINDSTORMS Education EV3 products. Other articles in the ‘difference between’ series: * The difference and compatibility between EV3 and NXT ( link ) * The difference between NXT Home Edition and NXT Education products ( link ) One robotics platform, two targets The LEGO MINDSTORMS EV3 robotics platform has been developed for two different target audiences. We have home users (children and hobbyists) and educational users (students and teachers). LEGO has designed a base set for each group, as well as several add on sets. There isn’t a clear line between home users and educational users, though. It’s fine to use the Education set at home, and it’s fine to use the Home Edition set at school. This article aims to clarify the differences between the two product lines so you can decide which

Let’s ban PowerPoint in lectures – it makes students more stupid and professors more boring

https://theconversation.com/lets-ban-powerpoint-in-lectures-it-makes-students-more-stupid-and-professors-more-boring-36183 Reading bullet points off a screen doesn't teach anyone anything. Author Bent Meier Sørensen Professor in Philosophy and Business at Copenhagen Business School Disclosure Statement Bent Meier Sørensen does not work for, consult to, own shares in or receive funding from any company or organisation that would benefit from this article, and has no relevant affiliations. The Conversation is funded by CSIRO, Melbourne, Monash, RMIT, UTS, UWA, ACU, ANU, ASB, Baker IDI, Canberra, CDU, Curtin, Deakin, ECU, Flinders, Griffith, the Harry Perkins Institute, JCU, La Trobe, Massey, Murdoch, Newcastle, UQ, QUT, SAHMRI, Swinburne, Sydney, UNDA, UNE, UniSA, UNSW, USC, USQ, UTAS, UWS, VU and Wollongong.

Building a portable GSM BTS using the Nuand bladeRF, Raspberry Pi and YateBTS (The Definitive and Step by Step Guide)

https://blog.strcpy.info/2016/04/21/building-a-portable-gsm-bts-using-bladerf-raspberry-and-yatebts-the-definitive-guide/ Building a portable GSM BTS using the Nuand bladeRF, Raspberry Pi and YateBTS (The Definitive and Step by Step Guide) I was always amazed when I read articles published by some hackers related to GSM technology. H owever , playing with GSM technologies was not cheap until the arrival of Software Defined Radios (SDRs), besides not being something easy to be implemented. A fter reading various articles related to GSM BTS, I noticed that there were a lot of inconsistent and or incomplete information related to the topic. From this, I decided to write this article, detailing and describing step by step the building process of a portable and operational GSM BTS. Before starting with the “hands on”, I would like to thank all the pioneering Hackers and Researchers who started the studies related to previously closed GSM technology. In particul