The use of the C programming language in a Linux programming course---common in most undergraduate computer science programs---has been the standard practice for nearly thirty years. The use of C is appropriate because Linux is written in C and, thus, programming with the system (i.e., accessing operating system structures and making calls to the kernel) is natural in C. However, this seamless integration of Linux and C can inhibit student assimilation of course concepts---through conflation of concepts with language (e.g., system calls with C, or libraries with gcc, respectively)---and, ultimately, student learning outcomes for a variety of reasons. We challenge the idea of the exclusive use of C in the Linux programming course and alternatively propose the use of the Go programming language, in strategic conjunction with C, to both achieve student learning outcomes and address some of the issues with an exclusive C approach. We explored and studied this approach---the use of Go in the Linux course---over the course of seven consecutive offerings of it. We present our experience with this approach including a collection of desiderata resulting from it as well as student survey data as an evaluation of its use in practice. Overall, the results indicate this approach is feasible, is no worse than an exclusive C approach, and yields advantages. We anticipate this experience report will inspire adoption of the use of Go in similar Linux programming courses.
[1]
Craig B. Zilles,et al.
uAssign: Scalable Interactive Activities for Teaching the Unix Terminal
,
2019,
SIGCSE.
[2]
John Hughes,et al.
Why Functional Programming Matters
,
1989,
Comput. J..
[3]
Steve Robbins,et al.
UNIX Systems Programming: Communication, Concurrency and Threads
,
1995
.
[4]
Rob Hess,et al.
Linux kernel projects for an undergraduate operating systems course
,
2010,
SIGCSE.
[5]
Wojciech Mazurczyk,et al.
Teaching Android Mobile Security
,
2019,
SIGCSE.
[6]
PeruginiSaverio.
Revitalizing the linux programming course with go
,
2019
.
[7]
R. Weisberg.
A-N-D
,
2011
.