Junior Computer Science Major Leads Command Line Crash Course

By Ben SanNicolas

For those of you keeping score at home, Matthew Bender prefers Vim over Emacs. As for his favorite flavor of Linux, Bender says he uses Ubuntu. And predictably, his shell of choice is Bash. If you have no idea what I’m talking about, you might consider attending Bender’s weekly workshop “Don’t Let the Line Command You”, where the junior computer science major leads participants from basic shell commands to proficiency developing in a Linux environment.

Bender’s idea for the command line workshop emerged midway through last semester. He had been working in a Linux environment for some time and saw numerous advantages over working in Windows with Eclipse or other IDEs, but realized most of what he knew came from his work experience, not in any University of Maryland courses. Though CMSC216 touches the command line, Bender says he didn’t start using it extensively until his internship at Viasat, a telecommunications company he worked for the summer after his freshmen year. “I needed to work on a remote server,” he explains. Vim, a lightweight and versatile text editor, and Bash, a powerful shell, were his go to tools.

In the case of Vim, Bender had one more reason to choose it: “My boss used it,” he admits.

Development in a Linux environment relies primarily on three types of software: the operating system (some form of Linux), a shell (in this case Bash), and a text editor (Vim). “The idea of shell programming is manipulating text,” says Bender. Using Vim, Bender can write a script that Bash will run to read a file and return almost any part of it. Take, for example, a list of websites some user has visited. “I could search for just facebook.com or remove duplicate [websites],” Bender explains.

Looking to spread his knowledge and transform other students into more efficient programmers, Bender pitched the seminar to his advisor, Brandi Adams. Adams loved it and took care of most of the logistics. By the end of January, Bender had a space and time for his class and free advertising through the undergraduate computer science listserv.
Though he’s only a junior, Bender isn’t entirely without his pedagogical credentials--he was a full instructional teacher’s assistant for CMSC216 and looks at ease at the front of a classroom. As he walks through each command, his lecture slides explain optional arguments and more advanced syntax. Students who didn’t know about shell programming until the first class can follow Bender as he writes on the board or types into the terminal window while more experienced students copy down new tricks for later.

Bender is very much building the course as he goes. When I met with him in the middle of the week, he was busy creating the lecture slides for that Friday’s class and solidifying what he wanted cover. When asked about the curriculum, Bender rattled off a few topics: an intro, an explanation of shells, tools needed for development in C, debuggers—“I have a list somewhere,” he says. In the first three weeks of the course, he’s covered the Bash shell and its basic commands and is looking to move on to shell scripting and functions soon.

Andrew Banks, a freshman in CMSC216, says he’s attending Bender’s seminar to learn about Bash scripting. “Once you know how to use Bash really efficiently,” he says, “it seems very useful.” Banks doesn’t mind that Bender is a random student either. “[The instruction is] a little above average,” he notes.

You can catch Matthew Bender’s above average instruction in CSIC 2117 every Friday from 3-4PM. For more information about the class, visit the class website (http://www.cs.umd.edu/command_line), or contact him directly at bendercommandline [-at-] gmail [dot] com.

The Department welcomes comments, suggestions and corrections.  Send email to editor [-at-] cs [dot] umd [dot] edu.