After 7 semesters in the Computer Science department, it was interesting to spend some time reflecting on the classes and learning objectives that I’ve dedicated so much of that time to. While imperfect, I absolutely believe that the Notre Dame CS department has met its accreditation requirements and, beyond that, prepared me to succeed as a computer scientist.
It was interesting to read the ABET accreditation guidelines and compare them to the department and the coursework that I have participated in during my time at Notre Dame. For the most part, I think the CS curriculum requirements are solidly met by the Notre Dame Computer Science program – “coverage of the fundamentals of algorithms, data structures, concepts of programming languages… an exposure to a variety of programming languages and systems, proficiency in at least one higher-level language”, among other things. Perhaps the only area in which I think the curriculum is lacking is “coverage of… software design” – while this is an elective offered at Notre Dame, I don’t feel like any of the classes in the core CS curriculum adequately cover software design or development practices. However, I feel like our curriculum is pretty robust and, even compared to other accredited CS programs, provides CS students with a very broad and solid foundation of CS skills.
I was surprised by how broad the ABET learning goals are for accredited programs – I’m not sure how they could accurately quantify “an ability to communicate effectively with a range of audiences” or “an ability to analyze the local and global impact of computing on individuals, organizations, and society”. While the CS department did teach me the skills to do things like “apply knowledge of computing and mathematics appropriate to the program’s student outcomes and to the discipline” and “analyze a problem, and identify and define the computing requirements appropriate to its solution”, I feel like the “soft” skills required by the learning goals – such as the ability to work on a team, communicate effectively, “analyze the local and global impact of computing”, and prioritize engagement in continuing professional development – were developed much more by my experiences outside of the CS department, specifically in my Arts & Letters classes and ROTC classes. That being said, I feel pretty confident that my four years at Notre Dame have prepared me to meet all of these learning outcomes, and part of the robustness of the Notre Dame program is that it pushes students to acquire skills and techniques from classes/programs outside their major.
To me, these skills gained outside of CS classes are nearly as important to being a good computer scientist as the ability to code itself. And this is why getting a college education is so important, and in my humble opinion, far surpasses any outcomes of attending a coding bootcamp. A college degree implies learning and understanding beyond just being able to type code – such as learning about the underpinnings and theory of algorithms or structures, learning how to speak and write and communicate, and how to think critically. As the Triplebyte Blog article “Bootcamps vs. College” summarizes, “bootcamp grads match or beat college grads on practical skills, and lose on deep knowledge.”
Now, if a person simply wants to be good at writing lines of code, or if a company is looking to hire a practical programmer good at writing hundreds of lines of code, then a bootcamp is a great option. In fact, this might even be the better option for some situations, and Triplebyte Blog says that “it’s really incredible how quickly and how well the best bootcamp grads learn.” However, I think it is clear that bootcamp programs cannot replace a college degree. Nearly every skill divulged in the article “What every computer science major should know” is a skill that, I believe, only college CS majors are learning – how to communicate ideas to non-programmers, the Unix philosophy, how to teach yourself new programming languages, discrete math, data structures, and algorithms, theory, architecture, etc. These topics require critical thinking and learning beyond what a bootcamp teaches, and are fundamentally important to becoming a programmer who is able to understand all levels of a problem, come up with new and creative solutions, adapt to changing technology, and innovate and think outside the box.
So, do you need to go to college to become a good programmer? No. But do you need to go college to be an ethical, innovative contributor in a field like software development or computer science? I think, on the whole, yes. While I don’t know everything that I could want to know, I do know that my Notre Dame education has provided me with a solid foundation of knowledge and, more importantly, the skills to continue to learn and contribute after graduation. I am grateful for the challenges and opportunities that this school and this department has presented to me, and I feel confident and ready to meet whatever comes next!