For this project, I worked in a team to make a learning management system. This client/server system would allow teachers to make quizzes and courses, which students could then take, and teachers could grade them. This project was done in Java, and we had to create GUI's for the user to interact with this. We also needed to make sure that multiple users could run the program without causing race conditions.
I worked on the teacher side for this project. So, I had several things I had to do. First, I had to figure out a way to send the information from the teacher to the server. Along with this, I had to make sure the information could be read correctly on the student side. So, I had to work alongside the team making the student client.
Another part of my responsibility was the GUI side of this project. I had to create a user interface that the user could interact with with buttons and such. The previous projects we did were all within the command-line. For this, I had to make sure that the GUI's looked good, they sent the right information, and never caused the user to crash.
Finally, I had to also make the entire system multi-threaded. This meant that multiple people could run the program. For this, I had to make sure that the server accepts every client that tries to connect to it. I then had to make sure that the users did not edit the files at the same time, as this could cause race conditions and could corrupt the information stored in the server. This was rather easy, as I just had to make sure the files were synchronized, and I made it so that the files were only edited at the very end when the user finally submits their information.