Foundations of Software Engineering is a course that presents an introduction to the field of software engineering. The class begins with a review of some core tools that are needed to support our work throughout the semester. We will then delve into the history of software engineering and review its foundational concepts and perspectives. We will then encounter a wide range of techniques and tools used in modern software development and we will work together as a class to create our own wikipedia of software engineering throughout the semester.

In addition, we will take two deep dives this semester on the following topics:

  • techniques and frameworks for designing concurrent software systems
  • techniques and frameworks for designing serverless single-page web applications

The high level goal of the class is to ensure that a student new to software engineering leaves the course with a grasp of the basic concepts and tenets of the field and has some mastery on the latest techniques and tools.

Learning Goals

  • a solid understanding of core software engineering concepts, including:
    • the concepts and arguments of No Silver Bullet
    • software life cycles
    • core life cycle stages (e.g. requirements, design, implementation, testing, deployment, and maintenance)
    • core support processes of software engineering (e.g. debugging, versioning, profiling, etc.)
  • a solid understanding of git and GitHub
    • a working knowledge of git for use in software development
    • a working knowledge of GitHub, including the relationship between repositories on your local machine and repositories on GitHub
    • a working knowledge of Markdown, such that you can use it to compose documents, comments, issues, etc. on GitHub and beyond.
  • expertise working in small groups of software engineers to design, implement, test, and deploy a software prototype:
    • the group will make use of an agile life cycle to plan and drive the development of the prototype
    • the prototype will make use of techniques and frameworks associated with the deep dive topics of the semester


Your grade will be determined by your work on:

  • Homeworks and the Semester Project (40%)
  • Essays (40%)
  • Quizzes (20%)

The semester project will be integrated into the homeworks for the class. Essays will be created on Github; they will be due each Wednesday (starting in Week 2) and will need to be reviewed each Friday. Quizzes will be taken on the D2L website associated with the class. Note: I currently do not have plans to hold a midterm or final exam for this class. However, I reserve the right to add exams to the class (with two-week advance warning) if I feel that I’m not able to properly assess your skills via the categories above.


I will also be supplementing the material in these books with lots of additional content from countless other books, web articles, and previous versions of this class.

Topics By Week

The table below provides a rough outline of the topics that we will be covering this semester, allocated to a particular week. Please consider this allocation preliminary; it will likely change.

Week Tuesday Topic Thursday Topic Assignment
1 Course Overview No Silver Bullet Homework 1 Assigned on Thursday
2 Git GitHub, MarkDown Elixir Textbook (Chapters 2-5)
3 Intro. Software Engineering Software Life Cycles Homework 1 Due on Tuesday; Essays Begin; Elixir Textbook (Chapters 6-10); Quiz 1
4 Agile Life Cycles User Stories and Iteration Planning Elixir Textbook (Chapters 11-14); Essays; Homework 2 Assigned
5 Elixir Elixir, Part 2 Essays; Homework 2 Due on Tuesday
6 Actor Model Actor Model, Part 2 Semester Project Begins; Essays
7 JavaScript Serverless Web Apps, Part 1 Essays
8 Serverless Web Apps, Part 2 TBD Essays
8 TBD TBD Essays
10 TBD TBD Essays
11 TBD TBD Essays
12 TBD TBD Essays
13 TBD TBD Last Week for Essays
Fall Break Sleeping Eating, then Sleeping Maybe watch a movie?
15 Semester Project Demos Semester Wrap-Up TBD

Syllabus Statements

The University asks that the following statements be presented to students at the start of each semester.

Disability Accommodations

If you qualify for accommodations because of a disability, please submit to your professor a letter from Disability Services in a timely manner (for exam accommodations provide your letter at least one week prior to the exam) so that your needs can be addressed. Disability Services determines accommodations based on documented disabilities. Contact Disability Services at 303-492-8671 or by e-mail at If you have a temporary medical condition or injury, see the Temporary Injuries guidelines under the Quick Links at the Disability Services website and discuss your needs with your professor.

This course requires the use of the Zoom conferencing tool which is currently not accessible to users using assistive technology. If you use assistive technology to access the course material, please contact me immediately to discuss your situation.

Religious Observances

Campus policy regarding religious observances requires that faculty make every effort to deal reasonably and fairly with all students who, because of religious obligations, have conflicts with scheduled exams, assignments, or required attendance. In this class, please send me e-mail or visit me in office hours to notify me of such a situation at least two weeks in advance of the event. See the campus policy regarding religious observances for full details.

Classroom Behavior

Students and faculty each have responsibility for maintaining an appropriate learning environment. Those who fail to adhere to such behavioral standards may be subject to discipline. Professional courtesy and sensitivity are especially important with respect to individuals and topics dealing with differences of race, color, culture, religion, creed, politics, veteran's status, sexual orientation, gender, gender identity and gender expression, age, disability, and nationalities. Class rosters are provided to the instructor with the student's legal name. I will gladly honor your request to address you by an alternate name or gender pronoun. Please advise me of this preference early in the semester so that I may make appropriate changes to my records. For more information, see the policies on classroom behavior and the student code.

Sexual Misconduct, Discrimination, Harassment and/or Related Retaliation

The University of Colorado Boulder (CU Boulder) is committed to maintaining a positive learning, working, and living environment. CU Boulder will not tolerate acts of sexual misconduct, discrimination, harassment or related retaliation against or by any employee or student. CU's Sexual Misconduct Policy prohibits sexual assault, sexual exploitation, sexual harassment, intimate partner abuse (dating or domestic violence), stalking or related retaliation. CU Boulder's Discrimination and Harassment Policy prohibits discrimination, harassment or related retaliation based on race, color, national origin, sex, pregnancy, age, disability, creed, religion, sexual orientation, gender identity, gender expression, veteran status, political affiliation or political philosophy. Individuals who believe they have been subject to misconduct under either policy should contact the Office of Institutional Equity and Compliance (OIEC) at 303-492-2127. Information about the OIEC, the above referenced policies, and the campus resources available to assist individuals regarding sexual misconduct, discrimination, harassment or related retaliation can be found at the OIEC website.

Honor Code

All students enrolled in a University of Colorado Boulder course are responsible for knowing and adhering to the academic integrity policy of the institution. Violations of the policy may include: plagiarism, cheating, fabrication, lying, bribery, threat, unauthorized access, clicker fraud, resubmission, and aiding academic dishonesty. All incidents of academic misconduct will be reported to the Honor Code Council (; 303-735-2273). Students who are found responsible for violating the academic integrity policy will be subject to nonacademic sanctions from the Honor Code Council as well as academic sanctions from the faculty member. Additional information regarding the academic integrity policy can be found at

© University of Colorado, Boulder 2016