Reviews for ENEE440

Information Review
William Hawkins
ENEE440

Expecting a B
Anonymous
06/07/2024
I've deliberated on this rating for awhile. In most classes, my opinion would be more-or-less finalized after the class is over and I've received my grade. This class, even after receiving my grade, I knew that whatever thoughts I would have would be biased in one direction or another. I've come to conclusion that I don't think Hawkins' style works for this class, which seems to be a sentiment shared by other reviewers. If I understood correctly, Hawkins had two primary takeaways in mind for this course: get "real" programming experience by programming a microcontroller (an STM32L476RG in our case, which we had the option of purchasing from him for $20) in assembly without an OS or simulator helping you out, and learn how to read datasheets and manuals. I think those are good goals to set, and honestly after taking the course, I understand microcontrollers far more than I did before, and I know how to look for information in datasheets and manuals. However, I don't think the course was structured very well for those takeaways. In fact, the course was hardly structured at all, especially in the second half, which Hawkins kind of takes pride in. For a course where we're learning the fundamentals such as ENEE440, I don't think this approach is very good. Lectures were pretty much just the professor rambling about whatever topic he wanted to get to that day, and there was very little supplemental material. Homeworks had due dates, but they were essentially soft due dates, which made it a bit too easy to procrastinate on all of them. This class requires self-motivation to keep up, and I just didn't have that for most of the second half of the semester, as everything else was giving me a rough time. The course has a final project worth a majority of the grade, which we know about from the start of the semester, but don't get a rubric for until halfway through. Everyone seemed to struggle with this. I got the median (96/229), and the high was a 148/229. From the professor's word, it's supposed to be just the second half homeworks glued together with documentation, but even from people who I know did better than I did in the course, the high is still quite low for that to be the case. In my case, I didn't find the MoT system he uses very intuitive, since there's not any documentation on it describing how it works from a high level, it's written in assembly, and I find the assembly files almost over-commented. I really don't think there was enough time for this project, especially considering that the class drop deadline is so soon after the content of the course starts relating to the project. I thought the class spent far too long on ARM assembly, and not enough time on getting the microcontroller peripherals to work. Of course, the class needs to have some sort of introduction to ARM assembly, but I think taking up until the midterm, as well as writing a reverse polish notation calculator, is excessive. It's likely that in any given semester, most of the class consists of computer engineers. We had an aerospace engineer in the class (computer engineering minor), but regardless, everyone's probably been exposed to some assembly language. Particularly with computer engineers, one or both of CMSC216 and ENEE350 likely had a RISC assembly language such as MIPS. ARM isn't that much different to warrant the amount of time we spent on it. I think the class should spend far more time on microcontroller programming, rather than just ARM assembly. As it stands, something as seemingly simple as getting the on-board LED to blink is done far too late (not counting the blinky program given to us at the start, as we don't learn how that works until later). The class is very Windows-centric, which took me by surprise. The IDE you install, System Workbench for STM32 (essentially Eclipse specifically configured for developing STM32 applications), works nearly flawlessly on Windows, but I had some issues with it on Linux. Not only is the last version of it from 2019, but I don't recall getting program flashing working properly, and the debugger never worked. As for the debugger, it relies on an arm-none-eabi-gdb backend, but I think it required a certain version of Python which it couldn't find, and I couldn't be bothered to make it work. I'm pretty sure M1 Mac users had issues with this IDE as well. It doesn't help that I find Eclipse to be a bad IDE, and I found it difficult extending the template projects given to us. I just configured my own command line build system and moved files as necessary. Side note: I don't understand why the course doesn't even touch on linker scripts or the startup file. By reading on and recreating crude linker scripts and startup files, I learned about memory regions, the interrupt vector table, how the data section is copied from FLASH to SRAM, how the bss section is zeroed out in SRAM, and in general just how much an operating system makes your life easier. Back to Windows-centralism, we were also given two executables: h2m.exe and testterm.exe. The source code was also given for both, and h2m seems to be written to be cross-platform, but the point stands. Thankfully, both worked well for me in WINE, but I know someone who used a Mac was having problems with testterm in WINE. Overall, I think the content of this course is well worth knowing, as knowing how the microcontroller deals with peripherals on a memory-mapped I/O level, as well as knowing how to read datasheets and manuals, are fundamental embedded skills in my opinion. However, despite the fact that I don't think this course is useless by any means, I don't think that it should be the way you acquire those skills, and I can only recommend the course to people who either need the ENEE440 credits for whatever reason, or who already have at least some foundation in embedded systems. I certainly can't recommend it to people who are taking more than 12 credits or so and don't already have a foundation in embedded systems. From what I've heard, Hawkins seems to be better for his project courses and ENEE459V, but don't quote me on that. For ENEE440, it could have been worse for sure, but it could have been a lot better.
William Hawkins
ENEE440

Expecting an A
Anonymous
03/26/2024
Amazed at the recent reviews from Professor Hawkins. I took his courses in the 1990s and he was literally THE professor that taught me the most about how to be successful as an engineer. The lessons I learned from following his homework assignments I have used over and over to deliver new systems in nearly every corner of the world over the past three decades. I hope his style has not changed and that the poor reviews here were based on misplaced expectations and not a change in his approach.
William Hawkins
ENEE440

Expecting a B
Anonymous
12/19/2023
This is the worst class that I have ever taken at UMD. Professor Hawkins makes up the homework as the semester goes along and does not have any real course structure other than giving weekly homework and a Final Project. Instead of learning about microprocessors, you will have 4 weeks of relatively easy assembly, that is a bit tedious but fair, before being thrown into a complex embedded system that he briefly explains and then hopes you figure out the rest yourself. I would say that on average, <10% of the class finished the homework assignments every week. Hawkins not only knew this, but expected it. There is an easy way to succeed in this class, anyone can get an A if they do this, spend 15-20 hours a week on the homework assignments. However, you can submit every homework assignment partially complete and get a 100% anyways. This sounds good, until you get to the 50% of your grade final project that combines all of the class homework, as well as things he literally never even mentions throughout the class into one project. It is truly unacceptable that a professor is able to run a class like this, and for this class to be listed as 3 credits when it is expected to put 12+ hours a week in. I am not unaware of the fact that 400 level classes require students to self-teach and self-discover, but the level of laziness in not even creating a single slide set or grading any of the homework assignments properly is abysmal and not in any way conducive to learning. This isn't even to mention the fact that the TAs do not know a single thing, and Professor Hawkins rarely answers his email. Do not take this class.
William Hawkins
ENEE440

Expecting a B-
Anonymous
12/11/2023
I wish I never took this class... It is so unstructured and he doesn't have a solid teaching plan about anything. He goes on a whim talking about weird intricacies about ARM and some things that may be useful for the homeworks. Working on these assignments is so frustrating because not even the TAs know what's going on and Hawkins rarely replies to emails - Office Hours is a joke. Avoid this class at all costs
William Hawkins
ENEE440

Expecting an A
Anonymous
12/11/2023
I have read all the reviews before taking the class, so I knew what to expect going in. I chose to take this class to get some project experience with a microcontroller board, and that's what I got. While everything the person below said is true. I actually quite enjoy the no-lecture lecture style. I think I would've maybe been able to get more out of his lecture style if I started assignments earlier and came to lecture with questions. I would also add that I have never read so much for a class, most of the assignments comes down to if you can understand the reference manual, reading and digesting it is one of the main things you have to overcome in this class.
William Hawkins
ENEE440

Expecting an A
Anonymous
11/01/2023
He is an extremely unstructured professor who frankly is quite lazy and makes very little effort to teach effectively. There are no powerpoints or lecture notes as he lecture style is just spew some information that I think you may need for the homework assignment (this information usually came too late). His assignments are difficult due to the lack of clear guidelines and his inability to teach or have any resemblance of structure. His assignments take a long time as its ARM Assembly and debugging is a pain when your professor doesn't actually teach. He is a professor that has made me strongly regret joining UMD's ECE department.
William Hawkins
ENEE440

Expecting an A
Anonymous
12/27/2021
I took this course Spring 2021 This class has a lot of potential but Professor Hawkins does not take advantage of it. He doesn't give you the tools or help necessary to complete the projects and no one in the class gets very far on them. The best part of the class is that you learn ARM assembly, but you could learn so much more if the professor restructured how assignments work.
William Hawkins
ENEE440

Anonymous
05/28/2020
Sigh... where to begin? Unfortunately this course does not enable you to learn about microprocessors. What this course gives you is a haphazard and shallow view into microprocessors by doing weekly assignments with several of the lsi peripherals (timer,interrupt, etc.) on the device. This may sound fine, but it didn't help that lectures did not talk about the lsi perhipherals in any sense really. I don't fundamentally understand what these peripherals are, in what applications are they used, and how they interact with other peripherals. The assignments themselves take a long, long time after the third assignment, and they are unclear. The weekly assignments are basically using 1 of these peripherals and doing something to it. All this requires is setting up a bunch of registers, and that's pretty much it. This takes hours and hours to do, because there are several datasheets that you need to dig in to find which registers to use if you don't know microprocessors, or how to interpret the peripherals. Tbh, the theme of the class was confusion. Assignments were confusing and the hawkins himself was confused at them, while the TA was unable to help as well (not his fault really). The final project was a mess, and it was extremely confusing to understand what was required, as expectations and guidelines were terrible. We had to constantly badger him repeatedly to figure out the point of the project, and even then there were several things that no one really understood what was going on. Lectures were of course pretty useless and provided no insight to what microprocessors are and do, and what the peripherals we used in the assignments are or do. Even though Hawkins may be a nice person and friendly, as a teacher he was ineffective and unable at presenting microprocessors, an extremely prevalent topic in Computer Engineering. If you are someone wanting to take this course in order to learn microprocessors, beware. There is no structure or clarity in the course, and I feel like I ended up not learning microprocessors fundamentally which really sucks, and trust me, I put in the effort, we all did. I wonder how his 150 students survive...
William Hawkins
ENEE440

Expecting a B
Anonymous
05/22/2020
Taught almost nothing, did a horrible job administrating. I wouldn't recommend to anyone.
William Hawkins
ENEE440

Anonymous
04/03/2010
Do not take this professor for any class he does not lecture at all . All he does is encourage you to research the contents of the class on google. If u wanna learn about microprocessor u basically have two options! go to other school or go to other school. Worst proffessor ever ! Obviously nobody wants to transfer at this point since most of the people takin his class are juniors or seniors so if ur interested in computer engineering take 446 , 408C 459k but avoid this guy u will get frustrated and end up hating your life
William Hawkins
ENEE440

Expecting an A
Anonymous
12/19/2009
I've had him for multiple classes. In each of the classes, Hawkins has come off more as a helper than a teacher (I think he'd take this as a compliment). During lectures, he'll only introduce you to ideas and assign homeworks on them. You're responsible for hunting down the documentation and software and then approach him with questions. But the annoying part is that he's hard to get ahold of. He's only available on Tuesdays and Thursdays for a few hours. He doesn't respond to emails at all. Even more annoying is that he doesn't return graded homeworks, so you pretty much have no idea how well you're doing in his class until you get your final grades. The setup of the class is basically 2 huge projects, a midterm, a final, and a homework due every two weeks (no deadlines on the homeworks, so you can procrastinate until the final week =) ). As I said earlier, you're not going to know your grades for any of the assignments. I suspect that he doesn't even bother grading him, and bases your grade purely on the projects.