CSCI 2930 Unix Tools
This section of the course (Spring 2018) meets on Fridays from 10:00-10:50AM in McDonnell Douglas Hall, Room 2096.
Students in this one-hour course will learn how to use Unix command-line tools to solve difficult data-processing problems quickly and easily. We will also discuss the design principles that underlie this approach to programming, and how they lead to good software engineering practice: modularity, simplicity, portability, reusability.
The prerequisite is a C- or better in CSCI 1300, or instructor permission.
Topics and Course Outline
- Small, reusable tools that do one job well
- Read from stdin, write to stdout
- Plain text as a universal interface
- Rapid prototyping
- Bash programming
- Command line basics (cp, rm, touch, ...)
- Pipes and filters
- Regular expressions
- Environment variables
- Loops and conditionals
- Data munging with pipelines
- Bread and butter (grep, tr, sed, sort, ...)
- Tabular data (cut, paste, join, ...)
- Multiple files (globbing, find, xargs)
- Understanding Unicode
- Higher-order programming; bash as a filter
- "Parsing" SGML with Unix tools
- Command-line software engineering
- diff and patch
- git and github
- Open source culture
Student Learning OutcomesAfter successfully completing this course, students will be able to:
- solve complex text-processing problems using standard Unix tools and pipelines
- develop their own reusable shell scripts that can be used in pipelines along with the standard tools
- use regular expressions, in conjunction with tools like sed and grep, to extract information from semi-structured data sources
- manage a non-trivial software engineering project using only command-line tools like diff, patch, make, and git
Homework and Exams
There will be a number of ungraded homework assignments throughout the semester. The best way to learn how to use these tools is through lots of practice, much more than we can get in just one hour a week. You should commit to working with Linux in your day-to-day life.
I will give a number of quizzes (roughly 4-5, depending on our pace through the material). Together those quizzes will count for 50% of your final grade. The other 50% will be based on a semester project of your choosing. This should be a significant text-processing challenge; preferably one that solves some real-world problem that helps you or someone else. I have infinitely many ideas for projects – more on this in class.
There is no final exam for the course.
- Student percentage above 93% will result in a grade of A or better.
- Student percentage above 90% will result in a grade of A- or better.
- Student percentage above 87% will result in a grade of B+ or better.
- Student percentage above 84% will result in a grade of B or better.
- Student percentage above 80% will result in a grade of B- or better.
- Student percentage above 77% will result in a grade of C+ or better.
- Student percentage above 74% will result in a grade of C or better.
- Student percentage above 70% will result in a grade of C- or better.
- Student percentage above 60% will result in a grade of D or better.
- Student percentage below 60% will result in a grade of F.
ACADEMIC INTEGRITY AND HONESTY
Students are expected to be honest in their academic work. The University reserves the right to penalize any student whose academic conduct at any time is, in its judgment, detrimental to the University. Such conduct shall include cases of plagiarism, collusion, cheating, giving or receiving or offering or soliciting information in examinations, or the use of previously prepared material in examinations or quizzes. Violations should be reported to your course instructor, who will investigate and adjudicate them according to the policy on academic honesty of the College of Arts and Sciences. If the charges are found to be true, the student may be liable for academic or disciplinary probation, suspension, or expulsion by the University. Students should review the College of Arts and Sciences policy on Academic Honesty.
STUDENTS WITH SPECIAL NEEDS-DISABILITY SERVICES
In recognition that people learn in a variety of ways and that learning is influenced by multiple factors (e.g., prior experience, study skills, learning disability), resources to support student success are available on campus. Students who think they might benefit from these resources can find out more about:
- Course-level support (e.g., faculty member, departmental resources, etc.) by asking your course instructor.
- University-level support (e.g., tutoring/writing services, Disability Services) by visiting the Student Success Center (BSC 331) or by going to http://www.slu.edu/success.
Students who believe that, due to a disability, they could benefit from academic accommodations are encouraged to contact Disability Services at 314-977-8885 or visit the Student Success Center. Confidentiality will be observed in all inquiries. Course instructors support student accommodation requests when an approved letter from Disability Services has been received and when students discuss these accommodations with the instructor after receipt of the approved letter.