4 ms·
Professor and curriculum engineer here who has created an undergraduate degree in CS/IT. Proof: (https://www.rtc.edu/net-arch https://www.rtc.edu/net-arch) Fir
by sonzohan 6y ago
Professor and curriculum engineer here who has created an undergraduate degree in CS/IT. Proof: (https://www.rtc.edu/net-arch https://www.rtc.edu/net-arch)
First off, this is a great starting point! There is a goal for every year, the courses clearly build upon each other, and there is an end-goal. I am a big advocate for project-based learning, and I'm seeing more employers seriously consider portfolios like GitHub and blogs. No employer cares that you got a 103% on your algorithms exam, and few vaguely care about your GPA. They do care if you can hold a conversation about a topic. They do care if you applied the knowledge, like building something that uses a tree, even if you didn't explicitly write all the data structure code yourself.
This curriculum is designed for the elite, think a student that would do well at Stanford. This is probably an obvious comment, as the majority of courses come from Stanford, but it's important to note that the breakneck speed of this curriculum targets the top 1-5% percentile of students. If our hypothetical freshman is a high school graduate they need to have done well on the BC Calculus, AP Statistics, and AP Computer Science exams at minimum. It also assumes that the student has enough computer experience to pick up advanced skills rapidly. You could argue that "Introduction to Computer Systems" and "Programming Fundamentals" are entry level, but reading carefully they are closer to the 2nd or 3rd CS course a student would take in a normal sequence. Week 2 in the programming fundamentals talks about Stacks and Queues, and Week 1 in Intro to Computer Systems introduces Unix, the CLI, and GitHub all in one week. These are very advanced topics for students that come in with 0 knowledge. You will need either rigorous admissions requirements, or prepare for a high first-year drop out rate.
We tried a 4th year very similar to what was described in the article. Students could pick a final project done in partnership with industry, or report on their internship/career if they were already in one. Students responded with "What do I need to do to get full credit?", "Can you give me step-by-step instructions that I can follow?", and "What will be on the exam?" (there are no exams in the program after year 2).
After 3 years of being explicitly told what they must do to succeed, students have correctly learned that going above and beyond in a class rarely yields extrinsic benefit within the scope of a class. To put it another way, students are trained to work efficiently in a classroom environment, "Exactly as hard as I need to get the exact grade I want, and not 1% more."
It's not necessarily a bad mindset, but we need to train students out of habits that are bad if applied outside of the classroom. In the case of my program, we chose to set a bar in the 4th year but didn't tell students how high to jump. This translates to removing a lot of clarity in assignment rubrics, and providing direction but not answers. A lot of students flailed, but none failed (yet!). Graduates report a smoother transition into industry.
We also introduced GitHub in their third year as a portfolio tool, few students have enough knowledge to understand and use it before then. At the end of every quarter students build a final project in groups, and apply all of the skills that go into a good repository (collaborators, pull requests, readmes, CI, etc.). While not all employers are looking at the actual projects, all students who have graduated thus far have said they used the knowledge of talking about a project in interviews.
On the internship/project classes/research front, unless you are using your reputation to open those doors for students (as I had to), a student's best chance of arbitrary contribution is through GitHub Issues and PRs. Your college's reputation is also a major factor here; In the case of my specific college, Amazon Web Services won't work with us because of a teaching agreement that went sour before I was hired.
Some critiques from others I'd like to comment on, in lieu of the author:
"Why isn't there core class X?" - Most students can't handle more than 2 core classes per quarter. That means 24 core classes over a 4 year period. Choose wisely. I think the author chose well, but no plan survives it's first encounter. My curriculum certainly didn't, and 3 years in we've thrown out almost all of the curriculum we initially wrote.
"No ethics, soft skills?" - This is a core class curriculum. Electives and additional classes for "rounding out" a student occur during at a later phase of curriculum design, usually when it's time to meet accreditation standards.
From there you will not like the second part of this answer. In my 3 year study on building an IT bachelor's (https://www.nsf.gov/awardsearch/showAward?AWD_ID=1601140 https://www.nsf.gov/awardsearch/showAward?AWD_ID=1601140), we found ethics training to work AGAINST a student's hiring prospects (cue pitchforks). Our Business and Industry Leadership Team (representatives from technology companies) rated "teaching ethics" at an average of 2.1/5 (A 2 means slight disagree that this should be taught). They marked "ethical knowledge application" at 1.4/5 (A 1 means strongly disagree that this is important). The BILT team commented that they were unlikely to listen to a recent graduate's ethical concerns on a project, they would regard a graduate raising the concerns as a 'nuisance', and that they would fire the graduate if their ethical concerns significantly impacted their job performance (cue more pitchforks).
Finally, consider the fresh graduate's perspective. The typical first-job-out-of-college mindset is "I have a ton of debt. I'll take the first job with the largest salary." I see this advice regularly on HN.