If computer science is about algorithm development and therefore not limited to the imaginations of Processor vendors, but to the realm of all that is practically computable. Then shouldn't a FPGA, which is almost ideally suited for studying cellular automata, be considered a valid platform upon which to study computer science. One particular area of interest, where I feel current curriculums are weak is parallelism and it's integration into programming languages. I think compiler design could benefit from a curriculum that let students deal with the explicit parallelism of FPGAs.
I honestly think that it would be useful, but I realize that this is a hard question to answer. The question really isn't whether or not a FPGA course would be valuable (it clearly would), but would it be valuable enough to drop some other course from the curriculum and replace it with this? My suspicion is that most curriculums would not be able to free up enough time to cover it as anything other than an afterthought.
As a CS student, I would LOVE an FPGA course. However, everyone is set in their ways and do not want to modify the curriculum. Its pretty heavy in theory and they think that microcontrollers and FPGAs require too much knowledge of electricity, etc to be of use to a CS student.
Because of this, I'm taking an electrical engineering minor.
Good lord no. I did an FPGA course in my final year, and it meant that I had to sit around for hours and hours while my code compiled. The work involved for a student to get simple code onto a board is horrendous. To this day, the words "place and route" send a shiver up my spine.
FPGAs are way cool. I have two questions:
What are the ideas of enduring value, that students will still work with 20 years after graduation?
What are you going to eliminate to make room for an FPGA course?
"Education is what is left when knowledge is gone."
As a recent graduate of Computer Engineering and having taken multiple embedded systems courses I feel that it would be extremely useful. It would be helpful in broadening the horizons of standard programming as well as help CS student with the most important aspect of embedded systems development which is efficiency. Managing memory is crucial and those aspects gained from an FPGA based course can carry over to desktop application development. I did not have to wait years for code to compile but "Place and Route" still isn't my favorite phrase haha. Dropping a course is hard for me to say because I am not a CS but CpE and do not know the exact curriculum. However, I am working on desktop applications at the moment and some skills I have gained in my FPGA courses have effected my work. There's my two cents. Enjoy
As a recent Computer Science graduate, I'd say FGPA's are more in the realm of Computer or Electrical Engineering. True, CS is about algorithms, but it is also about the theory of computing, data structures, artificial intelligence, etc., etc., etc. I think FGPA's are just too specific to be a required component. The concurrent programming class I took was at a much higher level, but I believe it gave a decent introduction to parallelism.
As it was, there was a bunch of upper year classes that I wished I could have taken but didn't have room for: quantum computing, compiler construction, real-time systems, etc. All of those would also be good candidates for inclusion into the core curriculum.
Yes, FPGA design should be integrated into a CS curriculum in some form. At least as a lab in digital design or parallel computing class. Modern FPGAs are no longer a bunch of configurable logic gates. They are system on chip (SoC) with multi-core processors and rich set of peripherals. I see more and more engineers with CS degree and little hardware experience do embedded design on FPGA. To exemplify my point, look at the discussions in Embedded Solution section on Xilinx forum.