wiki:StudentPrerequisites

Student Prerequisites

It would be great if all students had reasonable familiarity with:

  • Linux shell commands
  • Linux console text editors (xemacs is Mike's preference, but any programming editor with brace matching would suffice).
  • Installing a non-GUI Linux distribution (Mike normally uses Debian, but could also use Ubuntu server). GUIs really don't add anything to this process, and can be a real PITA before VMware tools are installed (and possibly after).
  • Version control

I have no idea how realistic this set of requirements are. Prior experience for the students in the pilot class over spring break 2013 was pretty varied, and nobody was experienced in all four areas listed above. Scaling this from 4 CSIT interns to many more CSIT and/or CSSC students will require a lot of advance planning.

(None of you guys should take any of this personally, this is just Mike brainstorming on how to make this workable in the future.)

Linux shell commands

  • It doesn't appear like the students are expected to use shell.csc by default, or often.
  • No idea if the student laptop culture affects this or not. It's certainly a 180-degree change from what I went through as an undergraduate.
  • No idea what's covered in potential prerequisities like Linux Lab or Systems Programming.
  • I have some handouts from a Linux short course I ran a couple of years back. It sucked up 4 hours or so on a primarily inexperienced engineering population, and would get them started.
  • I expected having to explain the --strip-components flag on tar. I didn't expect having to explain tar -zxvf to extract a tarball, cd ../.. to go up two levels, or cd alone to go back to the home directory.

Linux console text editors

  • Students' lack of experience with console text editors is killing me.
  • I use xemacs, since it has a language mode for everything, and I learned GNU emacs during my freshman year in a FORTRAN programming class on SunOS. vim may be a worthwhile alternative.
  • Neither xemacs nor vim are obvious to new users when there's no GUI available.
  • But nano misses way too many features by default for this class: particularly brace matching and syntax highlighting. Syntax highlighting is more or less optional. But brace matching (and automatic indentation) helps so much in tracking down puppet code errors.
    • On further review, it looks like nano supports brace matching by default (with ESC-]), and does some automatic indentation with "set autoindent" in .nanorc. It's still not emacs, but it's better than I'd first thought. emacs' M-x indent-region with the entire buffer selected remains my go-to indentation fixer and error finder.
  • Could ensure that vim and vim-puppet are installed alongside of xemacs21 and puppet-el in puppetmaster-bootstrap.
  • My Linux short course notes also cover enough emacs/xemacs after covering nano. I never covered vi.

Text-mode Linux installation experience

It seems like OS installation experience is completely dependent on what the students have done outside of class, and that may be a reasonable compromise given the other classes they have to take. But it's a total crapshoot on what I can expect a student to already know coming in.

  • Is it reasonable to expect students to install a department-standard Linux distribution, even in a VM on their preferred system, as part of an existing class?
  • If it can't be put into a class, could ACM pick up the slack here?
  • Or should it just be part of my class, and we cut into time spent "building infrastructures".

Version Control

No idea if this is covered anywhere in CSIT or CSSC. See Subverting the Fundamentals Sequence: Using Version Control to Enhance Course Management for ideas on adding VC as a component of all code-related classes. See Introducing version control & git in 1.5 hours to undergraduates for ideas on getting students up to speed in a just-in-time fashion, either as an ACM talk, or as a lab session.

VC books:

Last modified 5 years ago Last modified on May 8, 2013, 1:10:25 PM