3 ms·
I can design a simple op-amp circuit and deploy to a Kubernetes cluster because Canada has a "Computer Engineering" degree that's a hybrid between CS/Electrical
by jjmarr 1y ago
I can design a simple op-amp circuit and deploy to a Kubernetes cluster because Canada has a "Computer Engineering" degree that's a hybrid between CS/Electrical Engineering.
It doesn't work in practice. CS graduates from my school are trained on git and Linux command lines. CE teaches none of this and students discover in 3rd year they cannot get an internship because they share all their code as IDE screenshots in Google Docs.
But we do know how the entire process of building a computer works, from quantum physics, semiconductor doping, npn junctions, CMOS logic, logic gates, hardware design languages, assembly, C, and Java.
If only all of this "important" knowledge didn't crowd out basic skills.
- bee_rider 1y agoI think designing the EE and computer engineering curriculum is pretty tough. Because: * the EE’s need to learn matlab or numpy, to use as a tool * so do the computer engineering students, probably * the computer engineering students also need to learn low level stuff, because they might reasonably end up writing drivers or embedded code * separating out what should be in which classes is kind of tricky; keeping in mind that the students don’t necessarily know anything about programming at all, you probably need some kind of “intro to the general idea of programming” class * realistically when they start the program they don’t know much about what the jobs look like, so it is good if they are able to switch paths, for the first couple years * realistically a lot of people just want to get a stem degree and then go be a programmer anyway
- WillAdams 1y agoTime was that this sort of thing was covered in courses such as: https://ocw.mit.edu/courses/6-001-structure-and-interpretation-of-computer-programs-spring-2005/ https://ocw.mit.edu/courses/6-001-structure-and-interpretati... but they've since switched to Python for reasons: https://irreal.org/blog/?p=2331 https://irreal.org/blog/?p=2331
- bee_rider 1y agoI think you can teach this sort of class, in Python. Just using the basic syntax of Python, which is essentially pseudocode. The main danger, I think, is that it would involve doing lots of things in a non-pythonic way, which could confuse the students if they went on to write Python for real.
- jjmarr 1y agoWe do basic C, basic-medium Java, Python for signals analysis, and somewhat advanced design patterns. Tons of UML. The misses remind me of technical debt vs shiny features. I wrote embedded assembly and did a bunch of labs on them. But due to time constraints and difficulty, I didn't go into much detail on interrupt-based programming. And our OS course focused more on rote memorization of concepts such as locks/mutexes/semaphores/deadlock avoidance algorithms/memory management. But there's little detail on why I might use Linux syscalls over libc.
- alephnerd 1y ago> CE teaches none of this and students discover in 3rd year they cannot get an internship because they share all their code as IDE screenshots in Google Docs. Which CE program did you study at? I've worked with Waterloo, UBC, and UT ECE grads and they have similar levels of knowledge of programming fundamentals as their CS grads. I would be shocked if a first or second year BS ECE cannot use Git or some alternative VCS - that means there are more fundamental issues with your university's engineering curriculum. > I can design a simple op-amp circuit and deploy to a Kubernetes cluster because Canada has a "Computer Engineering" degree that's a hybrid between CS/Electrical Engineering. Same in the States, ECE and EECS programs tend to teach both fairly equally, and there are plenty of top programs with a strong reputation in this (Cal, MIT, CMU, UIUC, UT Austin, UW, UCSD, UCLA, GT, etc) The issue I have noticed though is the decline of "CSE" programs - CS programs with an added CompArch or OS internals focus. CS programs are increasingly making OS internals and CompArch optional at the undergrad level, and it is having an impact on the pipeline for adjacent fields like Cybersecurity, Distributed Systems, Database Internals, etc. I've harped about this skills gap multiple times on HN.
- jjmarr 1y agoToronto Metropolitan University (formerly Ryerson University). I only had a 90% in HS and didn't get into good CS/ECE programs (thanks grade inflation, my marks went up in uni). If you're not in Waterloo/UBC/UofT the quality drops drastically. We don't even have an automatic grading system for code. You have to go in-person to a lab and demonstrate your code "working" while the TA asks questions. It's actually a requirement that you put all of your code into a PDF and submit it. I have LaTeX macros that do it for me but most people literally attach 50 screenshots. I don't see this getting better. CompArch is a required course (COE608) but the assignments are too hard so the school just gives out prewritten code to everyone. The hardest part is copying and pasting from the PDF and removing the smart quotes. Also, the provided code is wrong. I found this out because I wrote everything from scratch and had to explain to the TA why my implementation of a shift instruction didn't match the correct one. I think everyone involved views software as a cash grab.