Category | Difficulty |
---|---|
Project | Varies |
This class organizes students into a number of teams in order to tackle a design project with societal impact. The project's topic changes from year-to-year, as do the responsibilities between teams.
In Spring 2022, the course focused on developing ways to enhance public transportation in Pittsburgh. This focused on three main areas: developing personal devices to collect data during transit, using infrastructure sensing to detect problems around the city, and building kiosks to relay information to citizens. There were several teams focused on a number of topics: Human-Computer Interaction (HCI), Hardware (HW), Software (SW), Data Analysis (DA), Data Visualization (DV), and Cloud/Databases (CD). These are discussed in more detail below.
Please note that this guide was written from Spring 2022; the project will change significantly in future offerings of the course. Although following years will likely continue to use similar teams as described below, there may be teams added or removed based on the project.
Officially, 18-540 requires (18-320 or 18-370 or 18-491) and (18-340 or 18-341 or 18-349). However, this depends significantly on which team you join. If you are working on one of the software teams, then you will find background in app development most helpful. For the hardware teams, having background in embedded systems programming, such as using C/C++ and Python on microcontrollers and computing boards, will be useful for the project. For the remaining technical teams -- data visualization, data analysis, cloud/databases -- having the appropriate background in those areas will be necessary, if you choose to join one of those teams.
As described above, the project is split into several teams, which work together on a project with societal impact. Since the project changes every year, the following sections will focus more on what each team does in the class, as well as how they work with other teams in the course.
The project is split into three phases:
- Phase 1 is for conceptualization. Teams will discuss various technologies that may be applicable to the project, as well as produce plans for the rest of the semester.
- Phase 2 is for prototyping. Teams will order the appropriate parts and services in order to construct basic functioning prototypes for the project, which are shown at the end of the phase.
- Phase 3 is for integration. Teams will spend this time testing and refining their systems before integrating them together. By the final demo, the class will have the fully-completed pipelines -- for example, the ability to capture sensor data, analyze the data to generate results, and then send those results to a mobile app to be displayed.
Each phase has a number of presentations as well as a report. The report is done as a class, so every team contributes. Class time is usually spent either doing presentations and demos or working on the project with your teammates.
The course has a budget which is shared between all teams. Usually, the HW teams will be the ones using the majority of the budget, though some other teams may require services such as AWS to be purchased. In Spring 2022, this budget was $2000.
These teams focus on human-computer interaction. They are presented with a problem and help brainstorm possible solutions to the problem. They communicate with other teams to ensure that the class has a consistent vision on how to approach the project's tasks and develop comprehensive solutions.
Note that this role is more of a project management role, as you will be communicating with several teams to ensure that the end-to-end pipeline is completed. That is, you will talk to the HW and SW teams to ensure that both teams have a consistent approach to the problem, along with the other technology teams, resulting in a final deliverable.
The HCI role is usually not a technical one. You can help other teams with their work if you'd like, but normally the HCI teams will focus more on the project management side of things. Thus, if you wish to work on the more technical aspects of the project, then it is suggested that you join the appropriate team described below.
The HW teams will get to use their knowledge of embedded systems, choosing the various hardware parts that they will use. More likely than not, these teams will work with boards such as Arduino or Raspberry Pi, though more advanced platforms such as the Jetson Nano can certainly be purchased for the project. Additionally, you will likely purchase a number of peripherals such as sensors or I/O devices to interface with your hardware system. You'll get to spend the first few weeks thinking about your system's design before ordering parts, so be sure to spec out your inventory as needed.
You will work closely with the HCI team, since you are turning their visions into reality through your work. Additionally, you'll likely communicate with other teams such as the SW and Data Analysis teams, depending on your project's design. For example, if you are collecting sensor data for processing, then working with the DA team will be necessary. If your hardware design interacts more closely with the apps (i.e. a kiosk), then you'll work closely with the SW team. You'll also need to talk to the CD team so that you have a clear idea of where to stream and retrieve data, if you need to send and get data from a cloud database. Overall, this team is a great fit for ECE students interested in embedded systems.
This role focuses on application development. The SW teams develop a number of apps that users will interact with. Because of this, you will work closely with the SW teams to ensure that the app conforms to the needs of the user. Often times, these apps will be designed for mobile devices. Accordingly, using programming languages such as Swift will be a good choice so that you can leverage the many libraries available in the language. If you wish to get more experience in software engineering, then this can be a good team to join.
This team works on analyzing the data coming in from the hardware systems. This can take the form of sensor data, voice data, or any other kind of data that is being processed in the project. As such, you will likely communicate directly with the HW teams so that you have a clear idea of what information will be sent by them.
Depending on the type of data being sent, you can use a number of models for analysis. Some models employed in Spring 2022 include YOLO for image processing, SVMs and KNNs for sensor data processing, and speech recognition APIs. This entirely depends upon the goal of the project, so don't limit yourself to any one particular model! If you're interested in data processing and analysis techniques, then this team may be a nice fit.
This role works on visualizing the information that is generated by the other teams. Depending on the project, this can take the form of hotspots on a map, roads highlighted in different colors based on priority, and so on. This team can use software such as Tableau to help them visualize what is on the map. Like the DA team, you will likely communicate with all the other teams so that you have a clear idea of what the data will look like when it's time to put it on the map. If you wish to learn about this kind of software, then this team may be suitable for you.
This team has an important role in organizing databases for teams to store and retrieve information. This role will have you communicating with all the other technology teams, as your service is what allows teams to communicate information between each other. Your choice of cloud platform is totally up to you; common choices include AWS or Azure. Just be sure to communicate with the other teams so that there is a clear understanding of where data can be stored and retrieved, and what APIs to call in order to do so. If you're interested in databases and cloud storage, then this team could be great for you.
This course is unique in that the entire class is working together to produce a final product, not unlike an actual company split into several teams. In order for this to work well, there needs to be consistent communication between teams. The HCI teams will hopefully help facilitate this, but you still want to ensure that everyone is on the same page as you progress.
Each team will have a leader for each phase, who will go to the team leads meetings every week. This will be a great time for direct communication between all teams, in order to resolve any outstanding issues. As with any team, communication both among team members as well as between teams will be crucial for a successful project. Also note that the "difficulty" for the course will largely vary, depending upon which team you join and your responsibilities within the team. For a well-balanced team, the workload should not be excessive.
In summary, this class is a great opportunity to work on a project with lots of freedom and creativity in your approach. Although it requires a great amount of coordination between teams, it is very rewarding to produce the final outcome as an entire class. Hopefully, through this course, you'll get to learn lots with your peers and have some fun building something special.
- Course Description
- IDeATe Resources, the main facility used throughout the course in Spring 2022
- Example of the Final Report from the Spring 2022 semester, which provides more insight into what the project accomplished as well as what each team focused on (note: requires CMU email to view)
- Example of the Final Report from the Spring 2023 semester, which developed a small-scaled testbed for connected and autonomous vehicle experimentation using the F1TENTH platform (note: requires CMU email to view)