CSCI3081W: Program Design and Development
(Fall 2024)

Welcome Video 

 


General Information

  • Course: CSCI 3081W
  • Sections: 001 and 020
  • Semester: Fall 2024
  • Credit hours: 4 Credits
  • Instructor: Mattia Fazzini
  • Course staff:
    • Graduate TAs:
      • Ekin Ercetin, Libby Ferla, Jack Johnson, Mengzhen Li, Shelby Ziccardi
    • Undergraduate TAs:
      • Srinivas Preetham Addepalli, Sebastian Moreno Ahumada, Michael Angara, Eren Erisgen, Israel Fuller, Aurora Hall, Ethan Jensen, Trent Kelly, Ariel Larin, Yiwei Li
  • Quick Links:
    • Topics
    • Piazza
    • Gradescope
    • GitHub Organization

You should refer to this course site and our Piazza site for information about course meetings, assessments, and grades. We will be meeting in class and the lab. It is also possible to attend classes remotely on Zoom. The instructor will deliver class lectures. Graduate TAs will oversee labs and provide help in the labs. Undergraduate TAs will also provide assistance in the labs. For class meetings, we will provide video recordings (when possible and applicable). For lab meetings, we will provide video demonstrations (when applicable). We will use Piazza for all communications between students, the instructor, and the course staff. (We added you to Piazza using your UMN email.) We use Piazza as it is a great place to promote interactions among students and the course staff can keep track of all course-related discussions in one place.

 


Course Schedule

Section 001

Lectures

Lectures will take place in Bruininks Hall 220. Lectures can also be attended remotely on Zoom (see meeting links under Section 001 in the Topics table).

  • [Section 001] T/Th 01:00 pm - 2:15 pm

Labs

Labs will take place in Keller Hall 1-250

  • [Section 002] F 09:05 am - 09:55 am
  • [Section 003] F 10:10 am - 11:00 am
  • [Section 004] F 11:15 am - 12:05 pm
  • [Section 005] F 12:20 pm - 01:10 pm
  • [Section 006] F 01:25 pm - 02:15 pm

 

Section 020

Lectures

Lectures will take place in Keller Hall 3-210. Lectures can also be attended remotely on Zoom (see meeting links under Section 020 in the Topics table).

  • [Section 020] T/Th 04:00 pm - 5:15 pm

Labs

Labs will take place in Walter Library B28.

  • [Section 021] F 10:10 am - 11:00 am 
  • [Section 022] F 11:15 am - 12:05 pm 
  • [Section 023] F 12:20 pm - 01:10 pm
  • [Section 024] F 01:25 pm - 02:15 pm
  • [Section 025] F 02:30 pm - 03:20 pm

 

Topics

 Week  Date  Type  Topic

Slides

Section 001

Section 020

Remote

Recording

Remote

Recording

1 09/03/2024 Class Course Introduction Slides Zoom Video  Zoom Video
09/05/2024 Class Version Control Systems Slides Zoom Video  Zoom Video
09/06/2024
Lab Lab 1: Git - Video
2
09/09/2024 Office Hours - - Zoom, Video
09/10/2024 Class Build Automation and Computing Environments Slides Zoom Video  Zoom Video
09/12/2024 Class Java Slides Zoom Video  Zoom Video
09/13/2024 Lab Lab 2: Gradle and Java - Video
3
09/16/2024 Office Hours - - Zoom, Video
09/17/2024 Class Software Design 1 Slides Zoom Video Zoom Video
09/19/2024 Class Software Design 2 Slides Zoom Video  Zoom Video
09/20/2024 Lab Lab 3: UML Class Diagram - Video
4
09/23/2024 Office Hours - - Zoom, Video
09/24/2024 Class Testing 1 Slides Zoom Video  Zoom Video
09/26/2024 Class Debugging and IDEs Slides Zoom Video  Zoom Video
09/27/2024 Lab Lab 4: IDEA and JUnit - Video
5
09/30/2024 Office Hours - - Zoom, Video
10/01/2024 Class Software Documentation Slides Zoom Video  Zoom Video
10/03/2024 Class Software Refactoring Slides Zoom Video  Zoom Video
10/04/2024 Lab Lab 5: Checkstyle and Javadoc - Video
6
10/07/2024 Office Hours - - Zoom, Video
10/08/2024 Project Class Project Iteration 1 Slides Zoom Video  Zoom Video
10/10/2024 Class Team Building
- - -  - -
10/11/2024 Project Lab Lab 6: Project Iteration 1 - Video
7
10/14/2024 Office Hours - - Zoom, Video
10/15/2024 Class Design Patterns 1 Slides Zoom Video  Zoom Video
10/17/2024 Class Design Patterns 2 Slides Zoom Video  Zoom Video
10/18/2024 Lab Lab 7: Design Patterns - Video
8
10/21/2024 Office Hours - - Zoom, Video
10/22/2024 Class Bug Reporting and Triaging Slides Zoom Video  Zoom Video
10/24/2024 Class Code Reviews Slides Zoom Video  Zoom Video
10/25/2024 Lab Lab 8: GitHub Issues and Pull Requests
- Video
9
10/28/2024 Office Hours - - Zoom, Video
10/29/2024 Project Class Project Iteration 2 Slides Video
10/31/2024 Class Group Work -  -
11/01/2024 Project Lab Lab 9: Project Iteration 2 - Video
10
11/04/2024 Office Hours - - Zoom, Video
11/05/2024 Class Program Representations
Slides Zoom Video  Zoom Video
11/07/2024 Class Code Coverage
Slides Zoom Video  Zoom Video
11/08/2024 Lab Lab 10: Jacoco - Video
11
11/11/2024 Office Hours - - Zoom, Video
11/12/2024 Class Test Doubles Slides Zoom Video  Zoom Video
11/14/2024 Class Topics in Debugging and Testing Slides Zoom Video  Zoom Video
11/15/2024 Lab Lab 11: Mockito - Video
12
11/18/2024 Office Hours - - Zoom, Video
11/19/2024 Project Class Project Iteration 3 Slides Zoom Video  Zoom Video
11/21/2024 Class Group Work - - -  - -
11/22/2024 Project Lab Lab 12: Project Iteration 3 - Video
13
11/25/2024 Office Hours - - Zoom, Video
11/26/2024 Class Android 1 Slides Video
11/28/2024 Class - - - - -
-
11/29/2024 Lab - - - - -
-
14

12/02/2024 Office Hours - - Zoom, Video
12/03/2024 Class Android 2 Slides Zoom Video  Zoom Video
12/05/2024 Class Software Engineering Slides Zoom Video  Zoom Video
12/06/2024 Lab
-
- - - -
-
15 12/09/2024 Office Hours - - Zoom, Video
12/10/2024 Class Guest Lecture
- -

 

Office Hours

Office hours will start from the second week of the course. TAs' office hours are individual. Office hours with a Zoom link will be on Zoom. Office hours with a location, will be in person. The instructor's office hours are group office hours. The instructor's office hours will be on Zoom and will be recorded so that everyone can take advantage from the answers provided.

Time Mondays Tuesdays Wednesdays Thursdays Fridays
08 am - 09 am
Trent
(Zoom)
Jack
(Keller Hall 6-248)
Trent
(Zoom)
Ariel
(Zoom)
-
09 am - 10 am
Ethan
(Lind Hall L103 T2)
Jack
(git)
(Keller Hall 6-248)
Preetham
(Zoom)
Ariel
(Zoom)
-
10 am - 11 am
Mengzhen (Checkout Piazza for updated OH on Oct 28th)
(Zoom)
Israel
(Zoom)
Ethan
(Lind Hall L103 T2)
- -
11 am - 12 pm
Sebastian
(Lind Hall L103 T2)

Eren
(Keller Hall Atrium T5)

Sebastian
(Lind Hall L103 T3)
Eren
(Keller Hall Atrium T5)
-
12 pm - 01 pm
-
Israel
(Zoom)
Preetham
(Zoom)

Yiwei
(Zoom)

-
01 pm - 02 pm
Shelby
(UML)
(Keller Hall 1-201)

- Shelby
(Keller Hall 1-201)
- -
02 pm - 03 pm
Libby
(UML)
(Zoom)

- - - -
03 pm - 04 pm
Libby
(Zoom)

Mengzhen
(Checkout Piazza for updated OH on Oct 28th)
(Java)
(Zoom)

Michael
(Lind Hall L103 T3)

Ekin
(Keller Hall 1-201 T3)
-
04 pm - 05 pm
- - Michael
(Lind Hall L103 T3)
- Yiwei
(Keller Hall 1-211 T2)
05 pm - 06 pm
Mattia
(Zoom)

- - - Ekin
(JUnit)
(Keller Hall Atrium T2)
06 pm - 07pm Aurora
(Keller Hall Atrium T5)

 Aurora
(Keller Hall Atrium T5)
 -  - -

  


Assessment

You can find the list of assignments on the Assignments page and you will use Gradescope to complete them. It is recommended that you check the Assignments page at the end of each course meeting to avoid missing an assessment.

Grade Components

Final course grades will be calculated based on the following percentages: 

Percentage Assessment Type
10% Participation
20% Labs
25% Quizzes
15% Project Iteration 1
15% Project Iteration 2
15% Project Iteration 3

Participation assessments and quizzes will use Gradescope. You will access lab assignments and project iterations through Gradescope and they will also use GitHub. (In this course, we will use https://github.com and not https://github.umn.edu).

Participation: Attending classes in-person or on Zoom is not required but highly encouraged as it is the best way to keep up with the course. The course has a participation grade. The participation grade will be based on offline assessments that include questions already answered during class meetings. At the end of each class meeting, you will need to complete a participation assessment on Gradescope. The assessment will be open for 48 hours. For students that cannot attend course meetings synchronously, we will provide meeting recordings (when possible and applicable) by linking the recordings in the Topics table above.

Labs: There will be 12 labs. However, labs labeled with "Project Lab" (in the Topics table above) will not be graded as their purpose is to get you started on the projects. In total, nine labs will be graded but the lab with the lowest score will be automatically dropped from the final grade computation. Labs are individual assignments (i.e., no collaboration) and you are expected to provide your own solution.

Quizzes: There will be six quizzes in the course. The quiz with the lowest score will be automatically dropped from the final grade computation. Quizzes will be available for 48 hours after they are released but once you start them they will be open for a limited amount of time. The time limit of the quiz is 30 minutes. Quizzes will happen roughly every other week and will be based on the topics of the previous two weeks (unless otherwise notified). To provide an example, the first quiz of the course will open on Tuesday 09/17/2024, and will be based on the topics covered in Weeks 1 and 2.

Project Iterations: In the project iterations, you will be working in a team of three people. We will use peer evaluations to help us assess how much the individual team members contributed to the results of the team. Please note that we will (1) give a lower weight to outliers (e.g., discount one very negative rating when all other ratings for that student are positive), (2) consider individual cases (e.g., specific problems that might have affected the performance), and (3) provide the opportunity to detail the individual contributions to the project iterations. In general, we will use a grain of salt when taking the ratings into account. 

Exams: There is no midterm or final exam.

Late Work Policy

Late work is not accepted in this class. There are a few reasons for this policy. First, the assessment schedule follows a tight timeline and we would like to grade assessments as quickly as possible. Second, you will have ample time to complete the assessments. Third, the majority of the assessments will help you complete immediately following assessments. Finally, for project iterations, we will release solutions so that students can keep pace in all iterations. 

Regrades/Grade Changes

Requests for items to be regraded must be made ​within seven calendar days of the marks being posted. Be aware, this means that students may not ask for an assignment from early in the term be regraded after they receive their final grade. If a mistake has been made in recording a student's marks,  please bring this to the attention of the course staff prior to the end of the term.

Final Grade

Final grades will be assigned based on the following scale. Grading for this course is on an absolute scale (i.e. no curve, no rounding up, etc.).

Weighted Score (x) Letter Grade S/N
94.0% ≤ x ≤ 100.0% A S
90.0% ≤ x < 94.0% A- S
87.0% ≤ x < 90.0% B+ S
83.0% ≤ x < 87.0% B S
80.0% ≤ x < 83.0% B- S
77.0% ≤ x < 80.0% C+ S
73.0% ≤ x < 77.0% C S
70.0% ≤ x < 73.0% C- S
65.0% ≤ x < 70.00 D+ N
60.0% ≤ x < 65.0% D N
0% ≤ x < 60.0% F N

Considerations on Final Grade

I also would like to share some of my thoughts on final grades. First and foremost, your grade isn't a judgment of who you are as a person. It is not an overarching statement about your fitness to work in this major or this field. It is not even necessarily a statement about how much of the course material you know or how hard you tried. It is a summary of the record of how you did on the required assessments for this course.

Second, if you mention to me that you think that your grade doesn't reflect your effort or your understanding, I want to let you know that I understand that. I want to let you know that you are so much more than that number or letter on a page. But if you ask me whether it is possible to change your grade, please understand that you are asking me to falsify the record of how you did on the required assessments for this course. I cannot do that. I can tell you that even if your grade is not what you would have hoped it would be, I still believe in you and in the dream behind that hope. I 100% believe that you can go on to be successful in this major and in the field throughout your life.

 


Detailed Course Information

Prerequisites

In this course, you are expected to have previous experience programming in Java. You are expected to know basic data structures (such as lists), algorithms (such as search), recursion, and data abstraction. You are expected to be proficient in English and using a computer to produce text documents and figures as required by the writing assignments. Please contact the instructor on Piazza if you have any questions about whether the course is a good fit for your background and academic goals.

Course Topics

In this course, you will learn the theory, skills, and tools to become a good software developer. This course will prepare you to succeed in 4xxx- and 5xxx-level programming intensive courses. CSCI3081W is a required course in the computer science undergraduate curriculum. The topics covered in the course include:

  • Software development process: software design, software testing, software maintenance.
  • Professional skills: group programming skills, project management skills, professional conduct.
  • Writing in computer science: using writing for communicating technical information to different audiences.

Student Learning Outcomes

In this course, you will learn to:

  • Understand and analyze software projects.
  • Develop descriptions of software design considerations.
  • Implement solutions to software design problems.
  • Learn techniques to ensure that the software works as expected.
  • Effectively utilize multiple genres of writing for program design and development.

University Student Learning Outcomes

Students will be able to identify, define, and solve problems.

Students will learn how to design and develop software. They will be able to explain and describe the main aspects that characterize the software development lifecycle. Students will solve problems by applying learned principles. They will write design documents, develop code, create tests, and perform software maintenance activities. Students will use project management and time management skills to coordinate group work and be held accountable for group commitments. They will interact as a team member and work and collaborate together with shared goals.

Students will work in small groups consisting of three people on project iterations, which will ensure students experience the main aspects characterizing the software life cycle. The course will include quizzes and in-class activities. Students will also be assessed through participation assessments. Assessments will be graded according to defined and published rubrics.

Expected Effort and Participation

This course covers a large amount of material, requires significant programming and other development activities, and is writing intensive. Therefore the course will require a good amount of time to do all the reading, programming, project development, studying for quizzes, and writing. Students should expect to spend an average of 12 to 15 hours a week on this course.

Course Components

Project

In previous courses, you’ve learned about different programming languages, algorithms, and data structures, and you’ve written programs as part of your course assignments. But, there’s a big difference between writing a function or two to plug into a homework assignment and the type of programming that happens in the "real-world"– for example, in the type of work you may do in industry or graduate school in a few years. One of the major goals of this class is to provide a first academic experience with analyzing, designing, writing, and verifying a “big” program – one that requires working on a project that takes more than a month to complete, requires a significant number (greater than 10) separate files of software code rather than one or two, and requires documentation and other good programming practices in order to be successful. In this course, you’ll learn how to do all these things through hands-on practice.

Project topic: This semester, we will be working on a visual project involving simulation and visualization of a transportation system. You’ll start by augmenting the base simulation. Later in the semester, you will extend it to use various software patterns to configure the simulation, visualize the simulation during execution, and analyze the results. You will also use techniques to ensure that the software behaves as expected.

Labs

In the labs, you will use real-world technologies that implement the theoretical concepts studied in class. The labs will also prepare you for doing well in the project.

Course Staff

The first priority of the course staff (i.e., TAs) is to ensure that each student receives the support they need to understand the course content. The course staff forms the first line of support when it comes to the labs and the project iterations. Please see them with any questions about the project iterations (graduate TAs) and labs (all TAs).

Textbook

There is no required textbook. The course meetings together with the course's slides will help you prepare for the assessments. If you would like to further explore some of the concepts we will cover throughout the course, we suggest the following books:

 Tips for Doing Well in the Course

  • Embrace this opportunity: Many of us are in computer science because we find software development rewarding. This class is an invitation to become a better programmer and a better software developer. We are lucky to have this hands-on, very practical course as a part of our curriculum. This course teaches all the things "I wish" I had learned in school, including how to write about computer science.
  • Keep pace with the class: This is the kind of course that relies upon practice and participation rather than book learning. For this reason, it is highly encouraged that you attend class meetings or watch class recordings periodically.
  • Understand the nature of the class​: This class is not an introductory programming class. It is a "learn by doing" class; a class that assumes you already know programming and computer science basics; and a class that involves professional skills such as group work, time management, and communication skills.
  • Give yourself a buffer on assignment deadlines​: One common occurrence in software development is there are often unexpected delays. This class has rigid deadlines on many assessments, so stay on pace in course activities. Plan to get crucial work done ahead of time so if/when unexpected issues arise you have time to address them and still meet the deadline.

Academic Integrity

All work submitted for this course is required to be your original work, or that of your group in the case of group work. You are expected to do your own thinking about how to solve an assignment, your own design, and your own coding. You are encouraged to discuss the content of the lectures and the texts with your peers. If you have any questions about whether discussing something with peers might go beyond what is permitted, then stop and ask us first on Piazza for clarification on the policy.

You are also not allowed to post your solutions to repos that are not the one we assigned to you. We will also use code plagiarism detectors in this class.

The web is a fantastic resource for learning about programming, but it is also a potential source for solutions to assignments, so it is important that we are all on the same page with regard to what is a permitted use of an online resource for this class and what is not. Use of the web in a way that supplements the type of information you will find in your class materials is great. This is encouraged. For example, if we talk about the Factory Method Design Pattern in class, you are encouraged to search for "factory method design pattern" online and read more about this as a generic technique that can be used within many programs. However, when it comes to programming a solution to your project, you are not allowed to search online for something like "use factory method design pattern to design a bus factory. This crosses a line into searching out the solution to an assignment rather than learning about design patterns.

Artificial intelligence (AI) language models, such as ChatGPT, and online assignment help tools, such as Chegg® are examples of online learning support platforms that can not be used to solve assessments in this course. The following actions are not allowed in this course:

  • Submitting all or any part of an assignment statement to an online learning support platform
  • Incorporating AI generated responses of parts in an assignment
  • Using AI to brainstorm, formulate arguments, or template ideas for assignments
  • Using AI to summarize or contextualize source materials
  • Submitting your own work for this class to an online learning support platform for iteration or improvement

The reason why it is not possible to use tools like ChatGPT is because the objective of this course is for you to learn in detail the steps characterizing design, development, and testing of fairly large programs. If you are in doubt as to whether you are using an online learning support platform appropriately in this course, I encourage you to discuss your situation with me.

Scholastic Conduct: Course, Department, and University Policies

Scholastic dishonesty includes any deceptive means whereby a student attempts to gain an unfair advantage. Examples of scholastic dishonesty include violating the course policies outlined here, especially its “Academic Integrity” section; plagiarizing; cheating on assignments; or engaging in unauthorized collaboration on academic work, either with other students or via the internet. In order to be as clear as possible about your scholastic conduct responsibilities and how these relate specifically to the types of courses that we teach in the Department of Computer Science & Engineering, the faculty have prepared a CS&E Department Academic Conduct Policy​. Our course will follow this policy, which stands alongside the broader Board of Regents Student Conduct Code.

Within the course, a student responsible for scholastic dishonesty can be given a penalty, including an "F" or "N" for the course. I am also required to report the incident to the Office for Community Standards, and further disciplinary action may occur. 

You are responsible for knowing and following the policies on scholastic conduct that are described in the syllabus ​and in the related documents discussed above (see especially the CS&E Department Academic Conduct Policy).

 


Additional Information

Disability Information

University policy is to provide, on a flexible and individualized basis, reasonable accommodations to students who have documented disability conditions (e.g., physical, learning, psychiatric, vision, hearing, or systemic) that may affect their ability to participate in course activities or to meet course requirements. Students with disabilities are encouraged to contact Disability Services and their instructors to discuss individual needs for accommodations. Disability Services, McNamara Alumni Center, Suite 170, 200 Oak Street, East Bank. Staff can be reached by calling (612) 626-1333.

Mental Health Information

As a student you may experience a range of issues that can cause barriers to learning, such as strained relationships, increased anxiety, alcohol/drug problems, feeling down, difficulty concentrating, and/or lack of motivation. These mental health concerns or stressful events may lead to diminished academic performance or reduce your ability to participate in daily activities. University of Minnesota services are available to assist you with addressing these and other concerns you may be experiencing. You can learn more about the broad range of confidential mental health services available on campus here.

Equal Opportunity

In this course, we are committed to the University's equal access and opportunity policy. The University of Minnesota shall provide equal access to and opportunity in its programs, facilities, and employment without regard to race, color, creed, religion, national origin, gender, age, marital status, disability, public assistance status, veteran status, sexual orientation, gender identity, or gender expression.

Sexual Harassment, Sexual Assault, Stalking and Relationship Violence

In this course, we are committed to the University's Sexual Harassment, Sexual Assault, Stalking and Relationship Violence policy. The University of Minnesota is committed to taking prompt and effective steps intended to end sexual harassment, sexual assault, stalking, relationship violence, and related retaliation, prevent their recurrence, and, as appropriate, remedy their effects.

Visibility on the Web

Zoom: We will use Zoom for classes to allow in class participation and remote attendace. We will also use Zoom for office hours meetings. If you have concerns, please contact the instructor on Piazza for further information.

Websites: In this course, our use of technology will involve sharing students' names, UMN usernames, and/or coursework information to course-related websites (e.g., Gradescope). All web sites might be affected by security vulnerabilities and it could be possible for them to be the target of software attacks. If you have concerns about the visibility of your name, username, or other information, please contact the instructor on Piazza for further information. Rest assured that it is our priority to keep this information within the boundaries of these websites.

Class Climate

All students are expected to behave as scholars at a leading institute of technology. This includes not talking over each other during the meetings. Disruptive students will be warned and potentially dismissed from the meetings.

Exceptional Circumstances

We reserve the right to make changes to the syllabus to accommodate for exceptional circumstances that are out of the course staff's control. We will announce any change if it needs to happen.