Current techniques in software design presented with emphasis on architecture first development. Introduction to the processes involved in development. Practice architectural design through a series of homework problems. Students work in teams to prepare the architecture for a software product.

Prerequisites:

  • CS 326 - Programming Languages, Concepts and Implementation
  • CS 370 - Operating Systems

  • Level: Senior
  • Period: Fall Semester 2023

Communication

  • Office Hours Zoom Link: Sent privately and on request
  • Discord workspace: Discord

Where ? When ?

  • Theory & Exercises all during the same time slot
  • Time: Tu/Th 4:00PM - 5:15PM
  • Location: CRC 159
  • Labs
    • The labs are organized as sessions in the computer rooms where you can work on your project freely and where an assistant is present to answer any questions. «Anyone without a laptop that would require access to the computer lab?» Moreover, the computer rooms are reserved for you during those hours, so you can certainly work.
    • In the first weeks practical “hands-on” lab sessions are organized about the use of certain tools (Git and GitHub, unit tests, and CI)

Rationale

The purpose of this course is to give students an introduction to developing software in a more realistic setting. In the first semester of the course (CS 472), students gather requirements; creating mockups and prototypes, while in the second (CS 473), they predominately implement and deploy their software. During both courses, students are required to choose and follow standard software engineering processes.

At the end of this course you will be able to…

  • develop a software project using professional tools.
  • guarantee the reliability of a software solution by means of fully automatic tests.
  • deliver maintainable software based on a good object-oriented design.
  • Perform continuous integration on every repository update.
  • learn the skills required to develop software collaboratively.
  • learn skills on how LLMs aid solving Software Engineering tasks.

Content

In addition to a theoretical introduction, the content of this course mainly consists of self-motivation. Starting from a requirements’ specification (which will be expanded and adapted in the project), the student will analyze the problem and design, implement and test a solution using any programming language of their choice.

Assessment (472)

While there are a number of assignments listed for this course, you will be graded by five primary criteria: 1) the individual GitHub assignment, 2) Software Testing, 3) Continuous Integration, 4) Leveraging Large Language Models (LLMs) in Software Engineering Tasks 5) your team senior project portfolio, 6) your team final presentation, and 7) your individual exam grades.

This document and the final presentation will be created and iteratively refined over the course of the semester. Besides these rules, I reserve the right to lower an individual’s students grade, all the way to an F, if I determine a student contributed little or nothing to their team project. Similarly, students that show exceptional performance in the student project may have their total course grade increased by up to one letter grade.

Assignments and due dates:

Individual assignments

  • Git Assignment - 30 points - Jan 29th, 2024
  • Software Testing Assignment - 50 points - Feb 5th, 2024
  • Continuous Integration Assignment - 20 Points - Feb 12th, 2024
  • Leveraging Large Language Models (LLMs) in Software Engineering Tasks - 15 points - Feb 26th, 2024

Team and Individual assignments

  • Pre-condition report - 5 points - please read on the project page how to prepare this document) - Feb 11th, 2024
  • Senior Design Portfolio I - 50 points - Feb 27th 2024
  • Senior Design Portfolio II - 75 points - Mar 26th 2024
  • Senior Design Portfolio III - 100 points - Apr 24th 2024
  • Project Presentations - 50 points - Apr 25 - Apr 30, 2024
  • Senior Design Competition - points - May 02, 2024
  • Exam - 100 points

Assessment (CS 672):

Students in CS 672 do the same course as those in 472, with two exceptions. First, in each project, they must write an additional software management report about their team’s project. These reports will include analysis of the repository and other details. Second, the final exam will include additional questions about a research paper that will be provided separately about 2/3 of the way through the course. Students will read this paper, which will be a modern research paper in the field, study its methodology carefully, and be able to answer questions not just about what was done, but about the techniques and procedures inside it. This extra component of the exam will be worth an additional 50 points.

No late exams or assignments will be accepted without prior approval or extraordinary circumstances.


[Table I: Grade Distribution:]

Grade Distribution

Literature

The following book is recommended as general background information to the course. They are available in the library.

  1. Design Patterns: Elements of Reusable Object-Oriented Software, Erich Gamma, Richard Helm, Ralph Johnson, John Vlissides
  2. Design Patterns in Modern C++: Reusable Approaches for Object-Oriented Software Design
  3. Object-Oriented Analysis, Design and Implementation
  4. Using UML : Software Engineering with Objects and Components
  5. Pro Git, available for free at: https://git-scm.com/book/en/v2
  6. Dathan, B., Ramnath, S. (2015). Introduction. In: Object-Oriented Analysis, Design and Implementation. Undergraduate Topics in Computer Science. Springer, Cham. https://doi.org/10.1007/978-3-319-24280-4_1
  7. Cooperative Software Development, Amy Ko, available for free: Book Site

Attendance:

While I will not directly track your attendance, your class, even online, is designed to be interactive with your classmates. The purpose of this is to encourage active learning, where you engage with the material during the class sessions. As such, a video would not do the course justice, and you are highly recommended to attend the online sessions.

Academic Misconduct

Academic integrity is a legitimate concern for every member of the campus community; all share in upholding the fundamental values of honesty, trust, respect, fairness, responsibility and professionalism. By choosing to join the UNLV community, students accept the expectations of the Student Academic Misconduct Policy and are encouraged when faced with choices to always take the ethical path. Students enrolling in UNLV assume the obligation to conduct themselves in a manner compatible with UNLV’s function as an educational institution. Many of us on the computer science faculty share, or copy, very similar statements about misconduct. An example of academic misconduct is plagiarism. Plagiarism is using the words or ideas of another, from the Internet or any source, without proper citation of the sources. See the Student Academic Misconduct Policy (approved December 9, 2005) located at: http://studentconduct.unlv.edu/misconduct/policy.html

Department of Computer Science Academic Integrity Policy

Each student enrolled in a course offered by the Department of Computer Science is expected to do his/her own work when preparing written or programming assignments, as well as, examinations. He/She must adhere to the academic integrity policy provided by his/her instructor and the university. It is also each student’s responsibility to notify the instructor if he/she becomes aware of any activities that would violate the academic integrity policy of the class. I reserve the right to fail any student, from the assignment or the course, for violating the policy, at my discretion.

Copyright

The University requires all members of the University Community to familiarize themselves with and to follow copyright and fair use requirements. You are individually and solely responsible for violations of copyright and fair use laws. The university will neither protect nor defend you nor assume any responsibility for employee or student violations of fair use laws. Violations of copyright laws could subject you to federal and state civil penalties and criminal liability, as well as disciplinary action under University policies. Additional information can be found at: www.unlv.edu/provost/copyright

ADA Statement:

Students who have special needs or disabilities that may affect their ability to access information and/or material presented in this course are encouraged to contact me or appropriate on campus entities for additional disability-related educational accommodations. Also, excellent students with a documented disability are sometimes eligible for internship opportunities through a grant program out of the University of Washington. Those students that are interested may optionally get in touch with me about this if they wish.

Disability Resource Center (DRC)

The UNLV Disability Resource Center (SSC-A 143, http://drc.unlv.edu/, 702-895- 0866) provides resources for students with disabilities. If you feel that you have a disability, please make an appointment with a Disabilities Specialist at the DRC to discuss what options may be available to you. If you are registered with the UNLV Disability Resource Center, bring your Academic Accommodation Plan from the DRC to the instructor during o ce hours so that you may work together to develop strategies for implementing the accommodations to meet both your needs and the requirements of the course. Any information you provide is private and will be treated as such. If you desire to maintain the confidentiality of your request, please do not approach the instructor before or after class to discuss your accommodation needs.

Incomplete Grades

The grade of I - Incomplete - can be granted when a student has satisfactorily completed three-fourths of course work for that semester/session but for reason(s) beyond the student’s control, and acceptable to the instructor and the Department, cannot complete the last part of the course, and the instructor believes that the student can finish the course without repeating it. The incomplete work must be made up before the end of the following regular semester. If course requirements are not completed within the time indicated, a grade of F will be recorded and the GPA will be adjusted accordingly. Students who are fulfilling an Incomplete do not register for the course but make individual arrangements with the instructor who assigned the I grade.

Tutoring

The Academic Success Center (ASC) provides tutoring and academic assistance for all UNLV students taking UNLV courses. Students are encouraged to stop by the ASC to learn more about subjects offered, tutoring times and other academic resources. The ASC is located across from the Student Services Complex (SSC). Students may learn more about tutoring services by calling 702-895-3177 or visiting the tutoring web site at: http://academicsuccess.unlv.edu/tutoring/

UNLV Writing Center

One-on-one or small group assistance with writing is available free of charge to UNLV students at the Writing Center, located in CDC-3-301. Although walk-in consultations are sometimes available, students with appointments will receive priority assistance. Appointments may be made in person or by calling 702-895- 3908. The student’s Rebel ID Card, a copy of the assignment (if possible), and two copies of any writing to be reviewed are requested for the consultation. More information can be found at: http://writingcenter.unlv.edu/

UNLV Library Resources

Students may consult https://www.library.unlv.edu/consultation with a librarian on research needs. For this class, the subject librarian is Sue Wainscott. See: https://www.library.unlv.edu/contact/librarians_by_subject for more information. UNLV Libraries provides resources to support students’ access to information. Discovery, access, and use of information are vital skills for academic work and for successful post-college life. Access library resources and ask questions at https://www.library.unlv.edu.

Rebelmail

By policy, faculty and staff should e-mail students’ Rebelmail accounts only. Rebelmail is UNLV’s official e-mail system for students. It is one of the primary ways students receive official university communication such as information about deadlines, major campus events, and announcements. All UNLV students receive a Rebelmail account after they have been admitted to the university. Students’ e-mail prefixes are listed on class rosters. The suffix is always @unlv.nevada.edu. Emailing within WebCampus is acceptable.

Final Examinations

The University requires that final exams given at the end of a course occur at the time and on the day specified in the final exam schedule. See the schedule at: http://www.unlv.edu/registrar/calendars.

Caveat:

The schedule and procedures for this course are subject to change. It is the student’s responsibility to learn of and adjust to changes.

COVID-19

COVID-19 has caused serious problems for all of us, students and faculty alike. It is possible that any of us this semester will have even more serious health or life challenges. Please keep this in mind when interacting with team mates, faculty, and others. A little bit of kindness and understanding goes a long way.