对于计算机科学(CS)专业的学生来说,软件工程师是最主要的职业发展方向之一。
一个优质的大学课程体系,必须为学生提供能够让其在职业生涯中取得成功所必需的关键能力。
众所周知,软件开发领域瞬息万变。如果课程过分追随当前的行业趋势,所学内容很可能在学生毕业之前就已经过时。
一个优秀的课程体系应当着重强调那些具有广泛适用性的核心理念,使学生能够灵活地适应在未来工作中出现的全新技术。与此同时,还需要教会学生如何思考软件本质,以及如何系统地解决问题。
这正是东北大学现行课程体系一直在努力实现的目标。
目前的计算机科学基础课程(简称Fundies)通过教授系统化的程序设计,为解决陌生问题提供了一套行之有效的方法论。
这种方法的核心在于,将复杂问题分解成小而可行的步骤,特别是在动手编写代码之前,先要求学生深入思考问题的本质。
诸如Fundies 1、Fundies 2、「面向对象设计」和「软件开发」这样的核心课程,着重培养的便是学生对代码的思考能力,而不是简单地堆砌代码。
Fundamentals of Computer Science 1 | CS2500 Fall 2024 - Fundamentals of Computer Science (Fundies) 1
不可否认,没有课程体系是完美的。
常有计算机科学专业的学生会抱怨,「为什么Fundies 1教的是Racket,而不是Python这种更『实用的语言』」。
需要强调的是,Fundies课程的重点并不是教Racket,而是培养可以应用于任何编程语言的程序设计能力。而Racket只是实现这一目标的教学工具而已。
实际上,一个在Fundies课程中掌握了核心概念的学生,完全可以轻松地将这些能力迁移到Python,或者其他任何语言当中。
况且,在科技行业瞬息万变的今天,仅仅开设教授Python的课程真的明智吗?毕竟,说不好哪天就会有另一种语言占据主导地位了。
课程体系的设定,应该更关注那些经得住时间考验的原则,而非追逐短暂的技术潮流。