- Semmy (spurewal@unca.edu): By appointment
- Sarah (svanwart@unca.edu): MWF 2-3PM in RRO 220 or by appointment
In this class, we'll learn about a variety of important Software Engineering topics from a practical point of view. This includes Developer Environments, Version Control, Dependency Management, Static Analysis, Testing, Continuous Integration, Async Concurrency, Front End Engineering, and Back End Engineering.
You'll be exposed to several important technologies including Git, Github, Python, JavaScript, React, Fast API, VS Code, Docker and Kubernetes.
You should know the basics of programming including variables, types, loops, and fundamental data structures. This is typically achieved through a 3 semester sequence of programming through a data strucutres class. You should have used a text editor of some sort to edit code, and it's preferable if you have some rudimentary experience with version control. We'll also talk about some systems stuff in this class, but won't assume too much there.
You'll need to bring a laptop to class to work on labs and various exercises. If you're running Windows, you will be expected to install install the Windows Subsystem for Linux.
In addition, you'll need to install VS Code and Docker Desktop for the OS of your choice.
There is no required textbook for the course, but we'll occasionally assign readings out of Software Engineering at Google which is freely available online. You're also encouraged to purchase a print copy of the book.
This course will consist of the following:
- Concept Lectures - typically one 30-45 minute lecture per week
- Discussions - typically 30 minutes per week
- Readings -- typically one hour of out-of-class readings per week
- Labs - roughly one lab per week, one hour in-class and two hours out-of-class
- Projects - three software development projects
- Guest Speakers - two to three in-class guest speakers from industry
We'll have a midterm exam and a final, and you'll get a grade on each lab and project. The grade breakdown will roughly be as follows:
- 10%: Participation (including attendance & quizzes)
- 30%: Labs
- 30%: Projects
- 15%: Midterm
- 15%: Final Exam
Be respectful to everyone at all times.
Attendance is required and will be taken. Unannounced quizzes may be given at the beginning of class.
Laptops are required for this class, but keep them closed when we're discussing things as a group (lecture, discussions, guest speakers).
There will be something due on Sunday at 5PM almost every week of the semester. This will generally be your weekly labs, and projects will be due on weeks where there are no labs due.
There will be some class time set aside for labs and projects every week, but they will not be designed to be completed entirely in class.
Late submissions are not accepted.
You're encouraged to use Chat GPT, Stack Overflow, Google, etc for your work in this class, unless otherwise specified in the assignment.
If you copy/paste code (and even if you modify it), cite it in a comment block above the code. Include a link or say that it was generated by Chat GPT.