Wonderful, I've been looking resources like this.
It seems to me its difficult to find project ideas for students/new beginners who want to get into the field.
most of the advice I got along the lines of "get an arduino...." or "Here is some device write this complex thing for it". There wasnt any in between tutorials.
The data structures and algorithms themselves should be the same regardless of what language you are using.
The bigger difference here would be C versus C++, as the language features present in the latter allow significantly more abstraction than the former. Implementing fundamental data structures in C can be very instructive but you will also spend more time on low-level details.
With Java and Python you can ignore memory management to some extent, as these languages are garbage-collected. That could also be a plus or a minus depending on your point of view. When learning the subject, it might be better to be forced to do manual memory management, to learn about the pertinent issues. And then once in "production", you can appreciate the convenience of a garbage-collected language.
When I studied EECS at Berkeley in the late 20th century, we used the following languages:
1. CS61A "Structure and Interpretation of Computer Programs" - Scheme/Lisp. Very highly abstracted from the machine details.
2. CS61B Algorithms and data structures - C++/Java. Allows "just enough" machine details.
3. CS61C Machine structures - MIPS assembly language and some C. All the machine details.
4. EECS 152 Computer Architecture - Implement a RISC/MIPS CPU and SDRAM controller using VHDL.
Unsure why this is downvoted? This question seems reasonable.
Personally I think Python specifically allows an easier understanding of the data structure in principal, but C/C++ would create a better understanding of data structures as they operate with constraints like memory/resource availability. Kinda depends what you’re after I think.
This spring, I completed a data structures course at a large state school. We used Java at our university because Princeton did, and I imagine Princeton did because of the ease of segmenting concepts into classes because Java bytecode is the same between the students' devices and the machines which were used to grade their assignments (our grades were determined as a fraction of the number of test-cases our code would pass).
I've had a reasonable experience with Reichelt but their shipping charges were high, and it still took longer than 48 hours to arrive (even if they dispatch on the same day)
For some reason DigiKey seem to have absolutely perfect timing with UPS, you can track it going state-to-state in the US, and then seamlessly to Germany and on to the connecting early morning flight to Finland (via Sweden).
Now I've said this I'm prepared to have my heart broken on my next order as it goes the long way round by ship or something ;)
I know what you mean, sometimes I wonder how small is really small, what I had in mind when I posted this thread was a project that might help me gain experience in building something related to embedded/IoT devices (routers, phones, low level but not too level that it doesn't have a kernel if that makes sense).
What kind of documentation one would normally need for this sort of project? If the documentation are not great or missing something, is there steps that could be taken to figure out the chips functions in order to implement them?
Thank you, that does sound interesting, and I do have an interest in cybersecurity (just not IT security as in firewalls, incident response ...etc). I saw some interesting stuff being done recently from programming/writing code to emulate a microcontroller/CPU in something like qemu, to power glitching and bypassing protection on some chips to allow accessing serial/debug interface or even some of the mobile baseband reverse engineering/emulation being done by experienced security researchers. but I couldnt tell what kind of experience I would need to have for that sort of job, or where to start, at least I think starting with embedded projects and low level OS-related stuff would someday lead me to that career path.
> my company is hiring and likely will be all year. We probably have a use for a new SWE on the embedded side. Email me at my username at Gmail.
We don't do IT cybersecurity. That stuff is boring. :)
Our work is much closer to the metal. There's a big hardware component. Based on what you describe, we have work that I strongly suspect you'd find interesting. Your intuition was correct - low level coding and OS stuff is where all the goods are at.
Shoot me an email at cushychicken@gmail.com and I can tell you about what we do in a bit more detail.
most of the advice I got along the lines of "get an arduino...." or "Here is some device write this complex thing for it". There wasnt any in between tutorials.
much appreciated.