Archive for Teaching

Importance of ADT and API Design in Embedded Systems Development (For Beginners)

Design of ADTs and APIs are an instinct to the seasoned embedded systems developer. This is not stressed enough in the academe, though, so I would like to share my insights on the importance of ADTs and APIs so you, as the student or beginner embedded systems developer, can appreciate their importance. :D

ADTs stand for Abstract Data Types. APIs stand for Application Programming Interfaces. ADTs are software things composed of data structures and operations. APIs, on the other hand, are function calls that simplify the use of a particular functionality in your system. You might have used APIs in your hobby projects, for example, accessing an ADC peripheral using simple function calls, or sending data through the UART without having the need to directly access the UART registers.

Designing applications with the right ADTs and APIs in mind have lots of benefits:

- ADTs and APIs make software more cohesive. More cohesion means that the functionalities of your components are more focused and specialized to a particular application.

- ADTs and APIs make software less coupled. Coupling refers to the dependency of software components to one another. The less dependent they are, the better, as you can change one software component without affecting other components that much.

- ADTs and APIs make software reusable. This is an after-effect of high-cohesion and low-coupling. You can reuse software components if they are focused on their job and are not dependent too much on other software to function.

- ADTS and APIs make software easy to maintain. Well-written ADTs and APIs abstract the implementation of your operations from higher, system-level applications, thus allowing you to modify the implementation with very little change to the dependent application.

With all these benefits, ADTs and APIs are important to embedded systems development because they provide a sound embedded systems software design. Embedded systems are driven by software, and just like any other software, embedded systems benefit from a good architectural-level and system-level design.

Up next: Case Study: ADTs and APIs in Mobot Design.

Cheers!

Leave a Comment

40 hours a week: How to make the most of your time in college

40 hours a week for school work. I usually give this rule to my thesis advisees so they could work on managing their time to do their thesis. I think the rule has evolved such that it doesn’t just apply to thesis, but to everything students do in school as well.

Think of it this way: 40 hours a week is the usual work-hour for a full-time industry job/business. That’s 8 hours per day, 5 days a week. And since you are a student right now, it’s fair to consider that you going to school and studying is your full-time job. School = full-time job. School = 40 hours a week. Pretty simple and straightforward right? :)

Let’s say you are enrolled in lectures and lab courses which eats up 24+ hours a week. If you are diligent enough, you might dedicate around 4+ hours to studying and reviewing your lessons. 24+4 = 28, and 40-28 = 12 hours. Hola, you are left with 12 hours to do other school stuff!

Oh yes… The 12 hours… That’s the amount of time dedicated to thesis, as I usually tell my advisees. You can also use the 12 hours to do org-work and extra-curricular activities.

You don’t have that much time you say? Again, think about it. How many hours do you dedicate to play DotA? How many hours do you spend just hanging out with your friends? I’m not saying these are bad but I do believe precious hours should be dedicated to the important tasks at hand.

Ok, don’t get mad at me. And yes, playing DotA and hanging out with friends are all important activities. That’s why I’ll post another one on this! Coming up next: What to do with the rest of your hours while in college.

Comments (2)

Follow

Get every new post delivered to your Inbox.