Teaching Assistant
ECE 120, Spring 2022
I was a sophomore TA who aimed to open up the world of computer engineering to first-year students, just like Prof. Volodymyr Kindratenko did an year ago.
- I guided the students in grasping complex concepts ranging from bit representations to circuit logic to LC-3 programming.
- I also provided reasonable support in coding assignments by giving prompts using lecture slides and nudging them towards coming up with the solution themselves.
- I paid particular attention to unveiling the reasoning behind how the tools came into being (e.g., inventing a new ISA) in the hope of laying a solid foundation for mastering the ECE technology stack – and the students loved my discussion sessions!
Once, the professor was touching upon the last and most complex example in circuit logic design before moving to LC-3 structure and programming. It was a vending machine that takes coins and button presses as input and outputs goods. With prior knowledge in FSM, MUXes, and adders, a diligent student could understand the circuit with some extra effort, but I talked about “philosophy” in my discussion session and raised questions about design decisions.
- Starting from a blank canvas, how can we interpret the customers’ requirements?
- How many functional units can the logic be divided into? How many should?
- What assumptions should we make? How can we simplify the interface?
- Why don’t we record the coin values directly and use encodings instead?
- Is this the best encoding in terms of logical simplicity? How about in terms of performance?
- Since the buttons are visible to the user, how may a malicious attacker exploit the loopholes?
- etc.
By decomposing the problem step by step and brainstorming the edge cases, students are encouraged to “forget the given answer” and develop a robust design in compliance with industrial standards. These open-ended questions are especially helpful in fully understanding complicated concepts.
Let it be code or music, do it like you never did before.