1 of 13

Midterm Review + Project 1

CSCI 338: Fall 2024

1

2 of 13

Outline

  1. Overview of Project #1
  2. Midterm Review Activity

2

3 of 13

Outline

  • Overview of Project #1
  • Midterm Review Activity

3

4 of 13

Project 1 Overview

  1. Learning Goals: Practice applying the big ideas we have explored so far (using all of the new tools and methods we’ve learned).
  2. Teams:
    • 2 teams / repos – please accept your GitHub invitation.
    • You will work on the task associated with the number associated with your name in the instructions.

4

5 of 13

Project 1 Overview (Cont’d)

  • How the App works:
    • Downloads the UNCA course catalog for Spring 2025
    • Gives the user a series of options for browsing the courses and putting the courses into a tentative schedule.
    • As the user interacts with the app, the user’s preferences are persisted and the app responds correctly to user’s requests.
    • DEMO

5

6 of 13

Project 1 Overview (Cont’d)

  • System Architecture:
    • (See diagram on course website)
    • Note that each class / file has a distinct job – allows different people to work on different parts of the system w/o stepping on each other’s toes (to the extent that this is possible).
  • Set-Up:
    • You’ll be using Docker
    • There is a video walkthrough of the setup

6

7 of 13

Project 1 Overview (Cont’d)

  • Working with Branches:
    • Never make edits to the main branch. All work should be done on a feature branch.
    • Rebase often as follows:
      • Stage and commit your feature branch
      • Checkout main
      • Pull down the latest from your team’s repo
      • Checkout your feature branch
      • Rebase (resolving any merge conflicts)
  • Pull Requests / Grading & Assessment – see Project 1 instructions

7

8 of 13

Project 1 Set-Up Work Time

Everyone:

  • Accept your GitHub invitation
  • Go to the issue tracker and sign up for the task you’ve been assigned
  • Set up your project on Docker
  • Create a feature branch (and name it something relating to the feature you’re working on.

One person from each team will:

  • Add each team member’s name to the README.md file and make a PR

After Sarah approves the PR…

  • The volunteer will merge the PR to main (on GitHub)
  • Everyone else will rebase (see rebase instructions on Slide #7).

8

9 of 13

Next Time: Project 1 Coordination

At the beginning of next class, you will meet with your team and discuss how you will communicate and make progress on your project. Some things to consider:

  • When should people have the first version of their tasks done?
  • How will you communicate?
  • How are you going to resolve conflicts?
  • Who is working on a dependency that you are relying on? Are there ways that you can mockup work that is not yet completed?

9

10 of 13

Outline

  • Overview of Project #1
  • Midterm Review Activity

10

11 of 13

Big Ideas in Software Engineering

11

Theory

Practice / Tools

1.

Programming v. software engineering

Considering trade-offs; making principled engineering choices

2.

Version control & branch management

git, WSL, working on the command line

3.

Everything as code, virtualization / containerization

Docker, declarative config files

4.

Package & dependency management

apt, npm, poetry

5.

Static analysis, testing, & CI

Linters, formatters, import sorters, etc.

6.

Organizing work across a team

Pull requests, logical units of work.

12 of 13

Activity: Midterm Review Cheat Sheet (15 Minutes)

  • Sarah will assign you to a breakout room (1-6)
  • Each breakout room will address the topic associated with your breakout room number. For instance:
    • Room #1 will handle programming v. software engineering, Room #2 will handle version control, etc.
  • In your breakout room (15 minutes), come up with 2 exam questions (and answers) for your topic:
    • 1 question should be about theory and the other should be about tools / practical decision-making.
    • Feel free to draw from the course materials, ChatGPT, the Internet, etc.
  • Write down the question and the answer in this Google Doc / Cheat Sheet, and be prepared to share out.

12

13 of 13

Share Out

13