CG2111A Course Review¶
Introduction¶
- Full name: CG2111A Engineering Principles and Practice II
- Target audience: NUS Year 1 Computer Engineering Students
- Purpose of the course: To introduce the fundamentals of microcontroller programming using the ATmega328P, with a strong emphasis on learning through a hands-on and engaging project.
- Notes Structure: View the CG2111A Lecture Notes
- CG2111-Cheatsheet: Here, you'll find the cheatsheet I created and used throughout the course, summarizing key concepts and methods for quick reference.
I took this course in AY24/25 Sem 2 for my degree requirement.
Course Content¶
Overview of Topics Covered¶
- Studio 1: GPIO Programming
- Studio 2: Interrupts
- Studio 4: PWM Programming
- Studio 5: Timers
- Studio 6: ADC Module
- Studio 9: Serial Communication
- Studio 10: LiDAR Programming
- Studio 13: Communication Protocol
- Studio 15: Secure Networking
Info
For the missing studios, they are probably tutorials which are used to solve some problems.
Depth and Balance of Coverage¶
Theoretical Understanding¶
Compared to EPP1, EPP2 is significantly more hands-on, with a reduced emphasis on pure theory. This does not mean that theory is absent. From the perspective of a Year 2 student, some of the concepts introduced in EPP2 are highly practical and useful, such as interrupts. In addition, the topics covered in the last two studios are relatively challenging. However, these topics only appear in Quiz 2 and are not required for the final project.
Application and real-world examples¶
As expected, EPP2 is well known for its final project. This time, I heard from many friends that completing the project within the given time frame was highly stressful. Fortunately, my group works quite efficiently, which greatly eased the pressure. From my personal perspective, however, this project is not tightly aligned with the theoretical content covered in the studios. For the final project, the main objective is to enable our robot to move smoothly and to implement a “fast” SLAM system by leveraging the processing power of a PC instead of the Raspberry Pi.
Challenging or Unique Aspects¶
In my opinion, the most challenging part of EPP2 lies in the last two studios, which focus on Communication Protocols and Secure Networking. These topics are relatively demanding conceptually. However, they do not play a major role in the final project.
Teaching Style and Materials¶
Teaching Style¶
Lab/Studio/Tutorial¶
I feel very grateful that my labs are taught by Mr. Khoa again. I feel extremely fortunate to be his student in both EPP1 and EPP2. He is a passionate and dedicated instructor, and I still remember staying back after lab sessions to ask him questions together with another student. His enthusiasm for teaching truly makes a difference in the learning experience.
However, with regard to the studio content itself, I feel that it is not as well structured as in EPP1. This may be partly due to frequent changes in course design, as Prof. Colin, the course coordinator, is known for continuously refining and adjusting the course structure.
Quiz¶
The two quizzes were relatively manageable for my batch. Unlike in EPP1, where some unexpected “accidents” occurred (such as Quiz 1 heavily resembling a past-year paper), no such issues appeared in EPP2. In general, if you understand each concept covered in both the studios and tutorials, the quizzes should not be particularly challenging.
Final Project¶
As briefly mentioned earlier, the final project can be very demanding, especially if you are unlucky enough to shoulder most of the workload for your entire group. In addition to the programming component, this year the teaching team also requires students to design a mechanical “grabber” to capture the astronaut. This adds a strong engineering element to the project and provides an excellent opportunity to apply the skills learned in EG1311. At least for me, I successfully reused the rubber band mechanism concept in my EPP2 robot.
Based on my experience, the following three points are crucial for succeeding in the final project:
- Make your robot move smoothly:Consider implementing a "WASD"-style control scheme. It is also helpful to support multiple speed modes for better maneuverability.
- Make your SLAM fast: Avoid running SLAM on the Raspberry Pi. Instead, think about offloading it to your PC. Based on my group’s experience, running SLAM on the PC provides a huge performance improvement.
- Have/Train a solid driver: No matter how good your code is, without a skilled driver, your robot’s performance will be severely limited during the final run.
Course Book¶
Textbook: There is no specific textbook (from Prof Colin's original response). For this course, I would say that the studio materials after the teaching team's revision are already good enough. And the ATmega328P datasheet is legit an awesome reference!
Leraning Experience¶
Personal Insights¶
I feel very fortunate to have worked with one group member from EPP1 again, along with two new but equally excellent teammates. I am also thankful that Mr. Khoa continued to teach me in EPP2. In addition, all the TAs, including Edward and Benjamin, were extremely helpful and supportive throughout the semester.
Skills Developed¶
The most important skill I developed in this course is how to read technical documentation effectively. I still remember being impressed by the ARM documentation in NTU SC1006, and this time, the ATmega328P datasheet proved to be equally clear and well-structured. In my view, the ability to read and understand documentation is a critical skill for Computer Engineering students, as it helps bridge the gap between the theoretical knowledge learned at NUS and real-world engineering practice.
The most important skill I have learned is about how to read the documentation. I still remember the time I was impressed by the ARM documentation in NTU SC1006. This time, the ATmega328P datasheet is also very clear! As I would say reading the documentation is a very important skill for Computer Engineering students to build the gap between the theory that they learned at NUS and the real-world industry projects.
Workload Time management¶
- Level of Difficulty: 7/10
- Tips for future cohort: I hope that my notes and our group’s final project code can help you focus more on learning the core concepts, rather than rushing just to complete the course requirements.
Conclusion¶
Overall, this module is not overly difficult or excessively time-consuming, and it serves as a solid and rewarding hands-on learning experience.
Useful Links¶
- My team's final project: mendax1234/CG2111A-Final-Project.