Skip to content

Commit

Permalink
Merge branch 'main' into tutorial_ide
Browse files Browse the repository at this point in the history
  • Loading branch information
abhutta0 committed Jan 6, 2024
2 parents 0888700 + 1a9ad8a commit 5c15cda
Show file tree
Hide file tree
Showing 40 changed files with 2,719 additions and 19 deletions.
108 changes: 108 additions & 0 deletions Assignments/project-overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,108 @@
---
layout: page
title: Project Overview
permalink: /assignments/project-overview
parent: Assignments
nav_order: 3
---

# Project Overview
The individual and team project for this class are designed to mirror the experiences of a software engineer joining a new development team:
you will be "onboarded" to our codebase, make several individual contributions, and then form a team to propose, develop and implement a new feature.
The codebase that we are be developing on is a remote collaboration tool called [Covey.Town](https://www.covey.town).
Covey.Town provides a virtual meeting space where different groups of people can have simultaneous video calls, allowing participants to drift between different conversations, just like in real life.
Covey.Town is inspired by existing products like [Gather.Town](https://gather.town), [Sococo](https://www.sococo.com), and [Gatherly.IO](https://www.gatherly.io) --- but it is an open source effort, and the features will be proposed and implemented by you!
All implementation will take place in the TypeScript programming language, using React for the user interface.


### Overview of Project Deliverables

| Date | Deliverable | Description |
| -----| ----------- | ----------- |
| 01/31/2024| Team Formation Survey | Specify preferences for teammates |
| 02/05/2024| Project Kick-off Meeting | Schedule a meeting with your Mentor TA during this week |
| 02/14/2024 | Preliminary Project Plan | Propose a new feature for Covey.Town that can be planned and implemented within 7 weeks |
| 02/28/2024 | Revised Project Plan | Refine the scope of your feature based on staff feedback, define detailed requirements and project acceptance criteria. |
| 04/10/2024 | Project Delivery - Implementation and Documentation | Deliver your new feature, including design documentation and tests |

### Summary of Project Grading
Your overall project grade (which will account for 40% of your final grade in this course) will be the weighted average of each of the deliverables.

* Planning (20%)
* This includes the Preliminary Project Plan and the Revised Project Plan.
* Process (20%)
* This includes: use of a structured development process, including code reviews, timely completion of progress reports and individual/team surveys, and weekly meetings with TA Mentor.
* This also includes appropriate division of labor within the project (i.e., roughly equal). For full credit, each member of the team must have at least 4 commits in the final delivered code.
* Product (40%)
* 20% Successful delivery of your Minimum Viable Product as defined in your project plan
* 10% Desirable delivered features
* 10% Test suite of your features.
* Reports (20%)
* 10% Final Report
* 10% Poster and Demo


In cases where team members do not equally contribute to the project, we may assign different grades to different individuals, up to an extreme of deducting 50% of the team project grade for a student (which might arise to 100% deduction for not contributing to the project at all).
We will evaluate each individual's contribution on the basis of a variety of factors, including progress reports at weekly meetings, through inspecting version control history, through each students' self-reflection, and through each students' peer evaluations (during and/or at the end of the project).
We will make regular efforts to collect and distribute this feedback throughout the project — our ultimate goal is for all students to participate and receive full marks.

### Team Formation
All projects will be completed in a team of 3-4 students.
The very first deliverable for the project will be a team formation survey: you will be able to indicate
your preferences for teammates. The instructors will assign students to the teams based on a number of factors including your responses to the survey.
All students in each team must be in the same section of the class.


### Team Meetings with TA Mentor
Each team will be assigned a TA to act as a mentor, who will work closely with you for the entire project and also will serve as your point of contact for project questions and grading.

During Week 5, you will arrange a "Kickoff Meeting" with your TA mentor, where you will meet your TA mentor and have the opportunity to share any early ideas that you might want feedback on before submitting the your preliminary project plan.

Once project begins in full force, you will have weekly meetings with your TA mentor (scheduled at your team's and the TA's convenience) in order to help ensure that you are making progress on the project, and to help address problems that you encounter (be they technical or non-technical problems).

### Preliminary Project Plan
All projects will involve frontend and backend development of a new feature for Covey.Town.
Once teams have been formed, you and your team will decide what kind of new feature you would like to build.
Your feature should be something that can be implemented within the timeframe allotted (5-7 weeks), and will be implemented in a fork of the main Covey.Town codebase.
Given that you will be up-to-speed on the Covey.Town codebase (and have been introduced to TypeScript, React, NodeJS, and testing frameworks),
and that you will have a team of three or four, we expect that the feature that you propose will be more complex than the feature implemented in the individual assignments.

The project plan will focus on two sections:
* User stories and conditions of satisfaction that describe the feature that you plan to implement. **EACH CONDITION OF SATISFACTION MUST HAVE A PRIORITY (Essential, Desirable, or Optional)**. The set of Essential items will constitute the "Minimum Viable Product" discussed above.
* Work breakdown: Map your user stories to engineering tasks. Assign each task to a team member (or pair of team members), provide an estimate for how long each task will take, a rationale for that estimate, and schedule those stories into sprints.

### Creating a GitHub Repository
Your team's development must take place within a GitHub repository in our GitHub Classroom. This repository will be private, and visible only to your team and the course staff. After the semester ends, you are welcome to make it public - you will have complete administrative control of the repository.

We will provide instructions to set up these repositories for all groups and will also provide the starter code for the project (after the revised project plans are submitted).

### Revised Project Plan
Based on the feedback that you receive from the course staff, you will revise your preliminary project plan, creating a more detailed plan to implement your new feature.

The project plan will include:
* Revised user stories and conditions of satisfaction (based on feedback on the preliminary project plan)
* Revised work breakdown (based on feedback on the preliminary project plan)

Your team will self-organize, as agile teams do, and will use the work breakdown and schedule as the basis for weekly check-ins with your team's TA.

### Software Development Process
Each team is expected to use of a structured development process, including use of pull requests and code reviews. You will also need to ensure appropriate division of labor within the project (i.e., roughly equal). Teams will also be expected to complete regular progress reports (or sprint retrospectives), and individual/team surveys. Peer evaluation may also be used (for Week 6, 8, 10-14).
Please note that one of the most important factors in successfully completing a team project is having effective communication.

### Project Implementation and Documentation

Your final team deliverable will be a "release" of your new feature on GitHub (with tests), and will be accompanied by a demo.
*Optionally,* you may also open a pull request to merge your feature into our main repository (submitting a pull request, or the pull request being merged into our codebase is independent of the grade you receive, but provides a platform for more visiblity of your project).

Your final team deliverable will include:
* The implementation of your new feature
* Automated tests for your new feature
* A Final Report
* A Poster & Demo (each instructor will provide specifics of the demo, which might vary for each section)

Accompanying the final team deliverable will be an *individual reflection*, which every student must submit on their own, which will include your reflections on:
* The evolution of your project concept: How does the project that you delivered compare to what you originally planned to deliver? What caused these deviations?
* The software engineering processes that you feel could have been improved in your project: were there any procesess that in hindsight, you wish that you followed, or wish that you followed better?
* Your team dynamic: Provide a frank (and ideally, blameless) postmortem of your and your teammates collaborative performance and participation. If you had to do this same project over with the same teammates, what would *you* have done differently (or not) to improve your team's overall performance?

The details for the final project deliverable will be released by Week 10.
9 changes: 9 additions & 0 deletions _announcements/week-0.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: Initial Website Launched
week: 0
date: 2023-12-18
---

Welcome to the course website for CS4530, Spring 2024! Over the coming weeks, we will be populating this website (and Canvas) with more information about the course.

{: .fs-5 }
18 changes: 9 additions & 9 deletions _data/config.yml
Original file line number Diff line number Diff line change
@@ -1,31 +1,31 @@
deadlines:
'3':
Wed:
date: 2023/09/20 11:00am
date: 2024/01/24 11:00am
content: ip1
'4':
Wed:
date: 2023/09/27 11:00am
date: 2024/01/31 11:00am
content: tp1
'6':
Wed:
date: 2023/10/11 11:00am
date: 2024/02/14 11:00am
content: tp2
'7':
Wed:
date: 2023/10/18 11:00am
date: 2024/02/21 11:00am
content: ip2
'8':
Wed:
date: 2023/10/25 11:00am
date: 2024/02/28 11:00am
content: tp3
'13':
'14':
Wed:
date: 2023/11/29 11:00am
date: 2024/04/10 11:00am
content: tp4
dates:
firstMonday: 2023/09/04
numWeeks: 14
firstMonday: 2024/01/08
numWeeks: 15
types:
default:
className: lesson
Expand Down
4 changes: 2 additions & 2 deletions _data/modules.yml
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
name: Orientation & Requirements
page:
1b:
name: Test Driven Development & Typescript
name: Typescript & Test Driven Development
page:
2a:
name: What Makes a Good Test Suite?
page:
2b:
name: 5 Best Practices for Effective Programmers
name: General Best Practices
page:
3a:
name: Design Patterns
Expand Down
2 changes: 1 addition & 1 deletion _includes/officeHours.html
Original file line number Diff line number Diff line change
@@ -1 +1 @@
<iframe src="https://calendar.google.com/calendar/embed?height=600&wkst=2&bgcolor=%23ffffff&ctz=America%2FNew_York&title=CS4530%20(Section%202%2C4%2C6%2C7)&src=Y181Mzk3NDVlOTBiYjlhYzk0NDM0YmVlNmY0MGU1MjExMjY5OWNlYTM4ZmVkMjI1MWFkNGUyOTZiMzdmMmM1ZjEwQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20&color=%23D50000" style="border:solid 1px #777" width="800" height="600" frameborder="0" scrolling="no"></iframe>
<iframe src="https://calendar.google.com/calendar/embed?height=600&wkst=1&bgcolor=%23ffffff&ctz=America%2FNew_York&src=Y181Mzk3NDVlOTBiYjlhYzk0NDM0YmVlNmY0MGU1MjExMjY5OWNlYTM4ZmVkMjI1MWFkNGUyOTZiMzdmMmM1ZjEwQGdyb3VwLmNhbGVuZGFyLmdvb2dsZS5jb20&src=ZW4udXNhI2hvbGlkYXlAZ3JvdXAudi5jYWxlbmRhci5nb29nbGUuY29t&color=%23D50000&color=%230B8043" style="border:solid 1px #777" width="800" height="600" frameborder="0" scrolling="no"></iframe>
2 changes: 1 addition & 1 deletion _staffers/bhutta.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ website: https://www.khoury.northeastern.edu/home/abhutta/
photo: staff/bhutta.jpg
section: CS4530 Sections 2, 3 & 5
office-hours: |
* In-Person: Monday and Thursday 130-230pm, Meserve 337
* In-Person: Monday and Thursday 135-230pm, Meserve 337
* or by appointment
---

7 changes: 7 additions & 0 deletions _staffers/harikrishnan_unnikrishna_pillai.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: Harikrishnan Unnikrishna Pillai
role: Teaching Assistant
email: [email protected]
photo: staff/harikrishnan_unnikrishna_pillai.jpeg

---
7 changes: 7 additions & 0 deletions _staffers/hongyi_zhang.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: Hongyi Zhang
role: Teaching Assistant
email: [email protected]
photo:

---
7 changes: 7 additions & 0 deletions _staffers/irina_park.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: Irina Park
role: Teaching Assistant
email: [email protected]
photo:

---
7 changes: 7 additions & 0 deletions _staffers/james_perretta.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: James Perretta
role: Teaching Assistant
email: [email protected]
photo:

---
7 changes: 7 additions & 0 deletions _staffers/kevin_jin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: Kevin (TaeYoon) Jin
role: Teaching Assistant
email: [email protected]
photo: staff/kevin_jin.jpg

---
7 changes: 7 additions & 0 deletions _staffers/ming-ho_Yee.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: Ming-Ho Yee
role: Teaching Assistant
email: [email protected]
photo: staff/ming-ho_yee.jpg

---
7 changes: 7 additions & 0 deletions _staffers/saideep_samineni.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: Saideep Samineni
role: Teaching Assistant
email: [email protected]
photo:

---
7 changes: 7 additions & 0 deletions _staffers/shashank_joshi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: Shashank Joshi
role: Teaching Assistant
email: [email protected]
photo:

---
2 changes: 1 addition & 1 deletion _staffers/wand.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,6 @@ website: http://www.ccs.neu.edu/home/wand/
photo: staff/wand175-cropped-2.jpg
section: CS4530 Section 4
office-hours: |
* TBA
* on Zoom, directly following class
---

Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/staff/kevin_jin.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added assets/images/staff/ming-ho_yee.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
116 changes: 116 additions & 0 deletions calendars/s1.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,116 @@
---
layout: schedule
title: Section 1 - Calendar
parent: Calendar
permalink: /calendar/s1
instructor: Prof Bell
location: West Village H 110
dates: Mondays & Thursdays 11:45am-1:25pm
weeks:
# Each key in this dictionary is a week, and then each week has a key in [Mon, Tue, Wed, Thu, Fri].
# Each day has keys `date` and `content`. The date is shown on the schedule, and `content` is a key into the yml file in _data/modules.yml. `content` may be an array.
# Each day can also have a `note` field, which is shown in italics on the calendar.
# This schedule data is unioned with the deadlines in _data/config.yml
'1':
Mon:
date: 2024/01/08
content: 1a
Thu:
date: 2024/01/11
content: 1b
'2':
Mon:
date: 2024/01/15
content: mlkday
Thu:
date: 2024/01/18
content: 2a
'3':
Mon:
date: 2024/01/22
content: 2b
Thu:
date: 2024/01/25
content: 3a
'4':
Mon:
date: 2024/01/29
content: 3b
Thu:
date: 2024/02/01
content: 4a
'5':
Mon:
date: 2024/02/05
content: 4b
Thu:
date: 2024/02/08
content: 5a
'6':
Mon:
date: 2024/02/12
content: [5b,6a]
Thu:
date: 2024/02/15
content: 6b
'7':
Mon:
date: 2024/02/19
content: presidentsday
Thu:
date: 2024/02/22
content: 7a
'8':
Mon:
date: 2024/02/26
content: 8a
Thu:
date: 2024/02/29
content: [7b,8b]
'9':
Mon:
date: 2024/03/04
content: springbreak
Thu:
date: 2024/03/07
content: springbreak
'10':
Mon:
date: 2024/03/11
content: 9a
Thu:
date: 2024/03/14
content: 9b
'11':
Mon:
date: 2024/03/18
content: 10a
Thu:
date: 2024/03/21
content: 10b
'12':
Mon:
date: 2024/03/25
content: 11a
Thu:
date: 2024/03/28
content: 11b
'13':
Mon:
date: 2024/04/01
content: 11a
Thu:
date: 2024/04/04
content: 12b
'14':
Mon:
date: 2024/04/08
content: 13a
Thu:
date: 2024/04/11
content: 13b
'15':
Mon:
date: 2024/04/15
content: patriotsday
---
Loading

0 comments on commit 5c15cda

Please sign in to comment.