uva-cs / pdr

A repo for a Program and Data Representation university-level course
Other
91 stars 227 forks source link

Move makefile tutorial from pre-lab 5 to in-lab 3 #67

Closed adeet1 closed 8 months ago

adeet1 commented 4 years ago

41

@50Wliu has endorsed this.

Compiling code with make is much easier and faster than having to manually compile several files via clang++. I thought it would be a good idea to move the makefile tutorial to in-lab 3, as that is much more lightweight than pre-lab 5. Since lab 5 is considered by many to be one of the more difficult labs, I thought that this would better balance the workload.

Lab 1 can teach students to compile manually with clang++ (e.g. via the provided LifeCycle program). I have also provided a makefile for lab 2 that students can use (although at that point, they're not expected to understand any of the syntax since lab 2 is already intense enough).

adeet1 commented 4 years ago

@50Wliu What do you think of these changes?

50Wliu commented 4 years ago

The Makefile itself is outdated based on the changes I made to the Makefile tutorial last semester. Take a look at the new Makefile-pizza.

(Oh and also, throw in a -std=c++11 in there.)

adeet1 commented 4 years ago

@50Wliu

UPDATE: I discussed this pull request with @aaronbloomfield during office hours today, and he mentioned that moving the makefile tutorial to lab 3 may not be the best course of action for the following reasons: 1) Students aren't yet completely familiar with the Unix environment at this point in the semester. 2) Makefile syntax is not user-friendly and error messages are cryptic, so it will be difficult for students to properly edit provided makefiles and/or implement their own makefiles from scratch.

From my understanding, we can keep the makefile tutorial in lab 5 (as is), but we could provide fully implemented makefiles for labs 2 and 4, because students need to submit very specific .h/.cpp files for these labs (which means it wouldn't even be necessary to edit them, they'd just have to run make).

However, providing a fully implemented makefile for lab 3 wouldn’t be a good idea, because the requirements for this lab are flexible and students would need to edit the provided makefile to suit their specific implementation (which would cause problem 2 above).