1 of 34

Course Overview

CSCI 338, Fall 2026�Software Engineering

2 of 34

Outline

  1. Introductions
  2. Overview of the course
  3. Logistics
  4. Activity

3 of 34

About Sarah (she/her)

  • Majored in Economics, transitioned into tech in my early 20s
  • Worked professionally as a software engineer for 10 years before grad school (working on collaborative decision-making systems for state and local governments)
  • Went to graduate school to research the societal applications and impacts of tech
  • My current research & professional interests include:
    • Examining the societal impacts of emerging technologies & business models
    • Building educational tools and learning experience to help novices learn about and understand ideas in data science and computing

4 of 34

Co-Designer of the Course: Semmy Purewal

  • Taught at UNCA from 2011-2013, 2024-2025
  • Currently at Trident IoT in Asheville (along with several recent grads), but previously worked at Netflix, Facebook, and Roku

Semmy taught CSCI 338 with me a few semesters ago. This course has benefited tremendously from his expertise, including the course structure, assignments, and selection of tools / technologies.

5 of 34

Let’s Talk!

Break into groups of 3-4. Introduce yourself (go around):

  1. Name, pronouns, something about you – fun fact, what you did over summer break, pets, hobbies, morning person v. night person.
  2. What is the first piece of technology you remember using?
  3. Would you rather…
    • Work remotely forever or never work remotely at all?
    • Have a job you love that pays less or a job you tolerate that pays a lot more?
    • Work on a tiny team where you do everything or a huge team where your role is very specialized?
    • Debug someone else’s code or have someone else debug yours?

6 of 34

Quick Share Out

7 of 34

Outline

  1. Introductions
  2. Overview of the course
  3. Logistics
  4. Activity

8 of 34

Overview of the course

  1. Why should I take this course?
  2. What am I going to learn?
  3. How am I going to learn it?

9 of 34

Why should I take this course?

This course will give you some practical and conceptual tools for thinking about how to design, build, deploy, scale up, and maintain systems over time – as tools and technologies change.

10 of 34

What am I going to learn?

You are going to explore three broad categories of ideas:

  • Culture – How people on teams can work well together to produce high-quality software (in a respectful, healthy way).
  • Process – How to actually go about writing code. This includes: style guides, code reviews, documentation, writing tests, deprecating features, and breaking down ideas into concrete features and tasks.
  • Tools – How various tools can improve how your team manages their codebase. This includes: version control, build systems, managing dependencies, and continuous integration.

11 of 34

What am I going to learn?

You are also going to learn some techniques, frameworks, and potentially a few new programming languages as we instantiate these ideas in code.

In other words, we’re going to be building a distributed web application as a way of practicing the ideas we’re learning about.

  • Think of the application that we’re building as the means.
  • Think of the tools and strategies for approaching software development as the end goal.

12 of 34

How am I going to learn it?

By being accountable to yourself (most importantly) and to your classmates (who will be relying on you)

  1. Attending class
  2. Doing the assigned readings / video tutorials / supplementary exercises
  3. Practicing via hands-on labs
  4. Setting aside dedicated time to work on homework assignments and practice the skills you learn in the labs
  5. Asking questions and getting help when you need it
  6. Being savvy about using online resources (Google, Stack Overflow, ChatGPT)

13 of 34

Some Other Thoughts…

  1. This course requires that you are proactive and resourceful
  2. Let’s build a healthy, productive class culture

14 of 34

1. You’re going to have to be resourceful

In this course, you are going to have to configure libraries and packages on your local computer, and learn new tools, frameworks, and languages on your own. Some thoughts:

  1. Navigating laptop configuration challenges and teaching yourself new things on your own is part of what it means to be a software developer.
  2. Learning how to do “systems troubleshooting” is important – this is something that you will be expected to know how to do in your careers (even though these skills are rarely taught).
  3. Please be proactive – if you’re stuck, come to office hours (or ask for help in class).

15 of 34

2. Let’s build a healthy class culture

  • We all want to be on a healthy, productive software team in our careers. It’s up to us to create that space for one another.
  • Please bring your unique expertise, perspectives, and experiences to class and share them with others, so that we might all gain from your perspectives.
  • Please respect and seek to understand the unique perspectives and experiences of others.
  • You will give your classmates the benefit of the doubt – about their competence and intentions – and can expect the same from them.

16 of 34

Outline

  1. Introductions
  2. Overview of the course
  3. Logistics
  4. Activity

17 of 34

Other Course Expectations

  • You will come to class prepared and ready to engage in an intellectual discussion about the readings and concepts.
    • There are assigned readings. I expect you to complete them before class on the day they are due.
  • You will complete all assignments – labs and homework – on time and with interest, engagement, and intellectual curiosity.
  • If I ask you to come to my office and explain, modify, enhance, or rewrite it, you should be able to do it without AI assistance.

18 of 34

Course Technologies

  • In this class, you will need a laptop and will be installing various software packages (you will probably need ~5GB of hard drive space).
  • Visual Studio Code is the recommended code editor. You may use whatever code editor you like, but I’ll be officially supporting VS Code.
  • We will be hosting our code on GitHub.
  • We will be using a wide variety of languages, frameworks, and tools to build different kinds of software (TBD)
  • We will be using Docker to manage our system configurations
  • We will also be using various cloud services and platforms (TBD)

19 of 34

Books

  • We will be reading from the Software Engineering at Google Book, which is a wonderful resource.
  • You will also be assigned individual readings and articles.

20 of 34

Grading

Projects

40%

Labs & In-class activities

30%

Exams (midterm + final)

30%

21 of 34

Labs

  • Labs make up 30% of your grade, and are due on Wednesday at midnight unless otherwise specified.
  • Your lowest lab score will be dropped.
  • Each lab will be graded as follows:

0pts

Not attempted

Assignment not submitted.

50%

Check Minus

Less than half of the assignment was completed correctly.

75%

Check

Most of the assignment was completed correctly.

100%

Check Plus

Assignment completed. Works as expected.

22 of 34

Projects

This class will have two projects, with increasing independence and collaboration:

  1. Project 1 – Independent Contribution
    • Everyone works in a shared codebase
    • You implement and test assigned features
    • You integrate your work into a shared repository through a code-review workflow
    • I will be the project manager / tech lead
  2. Project 2 – Team Development
    • You work in a small development team
    • Your team designs, builds, and tests a larger feature
    • Work is interdependent
    • Teammates need to coordinate and be able to rely on one another

23 of 34

Projects

To join a Project 2 team, you must demonstrate that you can:

  1. Understand and trace unfamiliar code
  2. Implement a modest feature independently
  3. Use basic programming constructs and simple data structures like lists, sets, and dictionaries fluently
  4. Debug and verify program behavior

There will be a Project Readiness Assessment as part of your midterm exam. Additional attempts available during office hours

  • Project Ready → Project 2 team
  • Not yet Project Ready → structured individual Project 2 pathway

24 of 34

Coding Exercises

If you are interested in pursuing a software engineering type career, code interviews are – for better or for worse – the currency of the realm. Given this, we will dedicate some time in the class to doing practice problems. Useful resources:

25 of 34

Attendance Policy (Please Read Carefully)

Regular attendance is required. Much of CSCI 338 involves in-class problem solving, project work, code review, and team coordination.

  • You may miss up to 3 classes with no grade penalty – no documentation or explanation required. Beginning with the 4th absence, each additional absence lowers your final course grade by one half-letter grade:
    • 4 absences → A becomes A−
    • 5 absences → A becomes B+
    • 6 absences → A becomes B
    • 7 absences → A becomes B−
  • The attendance penalty is applied after your final numerical grade is calculated.
  • University-approved accommodations and excused absences are handled according to university policy.

26 of 34

Participation

  • In addition to the Thursday labs, you will be expected to participate in class discussions related to the readings.
  • Reading quizzes and code interview exercises will be part of your participation grade.

27 of 34

Late policy

  • Late labs will be accepted up to one week after the deadline with a 25% penalty.
  • No late project submissions will be accepted.

28 of 34

Accommodations

Any student requesting accommodations related to a disability or other condition should let me know, and/or make an appointment to meet with the Office of Academic Accessibility as soon as possible (preferably within the first two weeks of class). To make an appointment, call 828.232.5050; email academicaccess@unca.edu; visit https://oaa.unca.edu/

All information will remain confidential.

29 of 34

Your Physical and Mental Health

Sometimes, life happens. If you are struggling with any health issues (mental, physical, etc.), please reach out to me (Sarah), your advisor, the Dean of Students, and/or the Health and Counseling Center (https://www.unca.edu/life/health-counseling/).

Being proactive about managing the issues you are facing – early on – makes it easier to come up with a plan and help you to be successful.

We can help you connect to resources on campus.

30 of 34

Academic Integrity and Honesty

I want you to use Stack Overflow, ChatGPT, online tutorials, plugins, etc. to enhance your understanding of the material. Be curious, and explore different approaches to solving problems and achieving functionality. Just make sure that:

  • You cite your sources in the comments
  • You understand how that code / approach / technique you’ve found works (and that you can explain it to me if I ask about it)

Passing off code that you found on the Internet as your own in a university class is not permissible. That said, making a note of the websites and sources you borrowed from is welcomed and encouraged.

31 of 34

Generative AI Policy

  • You are encouraged to use the broader Internet – including tutorials, code samples, libraries, documentation, GenAI tools, and other resources – to support your learning.
  • What tools are permitted will vary by assignment. Always follow the instructions for that assignment.
  • Regardless of the tools you use, you are responsible for understanding, evaluating, and explaining the work you submit.
  • Tools should support your learning, not substitute for the programming, reasoning, or analysis an assignment is designed to assess.
  • When in doubt, ask.

32 of 34

Outline

  1. Introductions
  2. Overview of the course
  3. Logistics
  4. Activity

33 of 34

Activity

In-class written exercise (just an exercise – graded on participation)

34 of 34

For Thursday

  1. Intro to Software Engineering Readings:
    • Preface. Software Engineering at Google Link
    • Chapter 1. What is Software Engineering? Link
  2. Lab 1: Code Editors & the Command Line
    • We will do the lab in class, but go ahead and take a look at it so that you know what we’ll be doing.