knowledge-kitchen

Course Intro - Software Engineering

Software Engineering

  1. Welcome
  2. Who you are
  3. Topics
  4. Structure
  5. Software
  6. What others say
  7. Conclusions

Welcome

Course description

We learn an engineering approach to the problem of software development.

This course is as much about tools and best-practices as it is about finished products.

Students work in teams to produce several software products.

Me

Foo Barstein

Who you are

Profile

Who are you, really?

Welcome!

What you know

What you probably don’t know

Topics

Software development process models

We will learn about the difficulties of building software and a few different approaches to the problem:

Planning

We will write specifications and build clickable prototypes of software applications that meet the needs of their users. This involves:

Web application development

We will sojourn through full-stack development of web application developments, using a Python-based technology stack:

Continuous integration

We will learn to write tests that validate our code behaves as expected and automate the boring job of repeatedly running those tests repeatedly with every code change.

Continuous deployment

We will learn to launch software on the Internet and how to automate the boring job of re-launching it with every code change.

Skills we will develop

You cannot do contemporary work without some fundamental skills.

Structure

Overview

This course involves each of the following:

Grading

Grading is broken down as follows:

Texts

No single textbook is necessary nor sufficient for this course. We will refer to various online resources where relevant.

Software

Install these now

You will need a variety of software tools. Here are a few to set up right now.

Setting Up Bash within Visual Studio Code

WINDOWS USERS - you should use Git Bash or Windows Subsystem for Linux (WSL) rather than Windows’ default Powershell or other command line shell program. To set Git Bash or WSL as the default terminal shell within Visual Studio Code, you can try to follow the instructions in the second answer here by Mahade Walid and edited by FruityOatyBar (ignore the first answe, which is outdated).

What Others Say

The Good

A sample of comments left by former students:

The course was a required course and was very demanding in terms of challenge but it was the appropriate amount and I learned a lot of valuable things. It was a great class and very helpful.

The professor was great. Very informative and provided all the necessary channels and resources needed to learn.

Projects. Hands on. Beats any studying for exams or doing theory based things. It almost felt like an internship of an internship and was very enjoyable while learning more than you realize.

The majority of the course is based on working in a team (which is expected because of the nature of what Software Engineering looks like as a job), and this was fantastic.

The Bad

A sample of comments left by former students:

Quizzes should be rewritten to reduce ambiguity and interpretation. This is because certain questions cannot fully be chalked up to “misunderstanding of the topic” when the question is poorly written for multiple interpretations which would change the outcome of the quiz.

The quick pace sometimes means that students have barely felt like the last project was completed and start working on assignments later.

I believe there shouldn’t be any strict restriction on using a specific technology stack as this is a “software development” course, students should be allowed to use any technology stack they are comfortable with, as long as it provides acceptable performance and solves the problem.

The Ugly

Structure was pretty strong in the first half of the semester. Got a bit lost on the structure in the second half.

I would have liked more direction on the later projects, and in working with groups, there always is a dynamic of some people doing more work than others, which I definitely experienced in half of the projects.

The 4th project practically required an extension as it was incredibly time–consuming.

There are sometimes people in your group that won’t uphold their weight which in my opinion is kind of unavoidable.

Time commitment

Time commitment

Openness

Openness

Challenge

Challenge

Knowledge increase

Knowledge increase

Conclusions

Thank you. Bye.