CSC 4630-001

Software Development and Systems

Spring, 2013

Dr. Don Goelman

Table of Contents

Course Content and Objectives

Course Content

Course Objectives

More About the Course

As the title indicates, this course is intended to teach you some important concepts and approaches to software development. This includes many different kinds of tools, filters, libraries, and system calls. Although the environment which we use in class will be a UNIX one, and the system programming will therefore, of course, primarily be in C, you shouldn't think of this course as bound to that system or that language. Rather, we will be concentrating on ideas of software development. Indeed, you will notice that one of the excellent references below, Kernighan and Plauger's book, presents its programs in Pascal (its original version used a language called Ratfor). The idea is therefore that it's not the language that is critical, but the concepts. Like so many aspects of this course, the longevity of C is pretty amazing.

There are typically several constituencies in our class: computer scientists, astronomers, computer engineers and others. For this reason I'm leaving some of the later plans somewhat flexible. The ratio between heavy-duty C programming and Perl programming will be determined based on your interests and my own perception of which way we should go.

The absolutely best things you could be doing for this class are experimenting, exploring, and testing the examples discussed in class and in our primary text. The first reason is that you will learn more by doing them and playing with them than by listening to me explain commands. The second is that it should actually be fun. You don't need to have a hacker personality to do well, but it doesn't hurt. The single biggest factor in a student's course grade is probably the number of hours per week s/he spends on the course, outside class hours.

You might be interested in acquiring one or more of the references mentioned below, especially if it would be useful for your group's project, but I suggest you look them over first (I have personal copies of most of them; you're welcome to look them over). If you're interested in software tools, you'll probably find the new book by Kernighan and Pike, plus the ones by Kernighan and Plauger, Leininger, and Peek, O'Reilly, Loukidis et al interesting.

Speaking of the term project, it will emphasize working in groups to apply or investigate some tools and their applications beyond what we discuss in class. I'll be giving you the specifications around the time of our midterm break. Even though this will be done in teams of two and three, the scope is not on a scale of what CSC and CPE majors experience in their project courses, or even in database CSC 4480.

You might be wondering about the age of our primary text, and rightly so. In this age of Web programming and the ubiquitousness of GUI's, what are we doing discussing text-based tools? In fact, as the more recent (copyright 2006) Das book points out, you will be astonished at the timeless nature and power of those tools. (The Das book was a close second choice to K&P as a text for this course, by the way.) Besides the references listed below, your Web search will turn up other even more recent ones (but none, you'll discover, as good as K&P), as well as many free downloads on the topics we hit.

Of course the downsides of using an old book, even a terrific one like K&P, are (a) some of the material is obsolete, and (b) the publisher never got around to furnishing PowerPoint slides for it. We'll surmount those obstacles. Further, our author Brian Kernighan, among the original developers of the UNIX operating system, the C programming language, and the awk language/filter (he's the 'k' in 'awk'), is alive and well and teaching at Princeton, (see his home page).


News Bulletins

  • 4/21) This is about the first line in your Perl scripts. The slides show two versions:
    #! /opt/local/bin/perl -w
    #! /usr/bin/perl -w
    That's because the "perl" command is found in a couple of directories. The problem is that not each directory is accessible on each system in our Unix cluster. /opt/local/bin is mounted on monet and tanner and others, but not csdb. /usr/local/bin is mounted on csdb and tanner and others, but not monet.
  • 4/30 (Tuesday)) Labs 4 are due.
  • 5/1) Exam 4
  • 5/9 (Thursday)) Project presentations 8:30 AM. Copy of slides due then, as well as the paper.

  • Instructor

    Dr. Don Goelman
    162A Mendel Science Center
    Voice:(610) 519-7346
    FAX: (610) 519-7889
    Office hours: MTWTh 10:00-11:00 in general. If you plan to come by, it's safest to warn me in advance. You can also just drop in at any time at all: if I'm available, I'm yours. And I'll be glad to set up an appointment at a time that's convenient for you.

    Text and Other References


    Learning C

    As I mentioned earlier, the degree that C will be covered will be determined in a few weeks. Most likely, it will be less explicitly "taught" than "brushed up on." Given the fact that we have various majors in this course, it's not surprising that there's a variety of levels of expertise in the C language here. If yours is among the highest, you'll find some lectures paced a little slow for you. If you have had no or little experience, you'll have the opposite impression. Don't worry: as upperclass majors in computer science or related fields, you are expert in some other language, probably Java, and should be able to pick up C with few problems. As with the UNIX side of the course, the best way to help yourself is to try a huge number of examples. While the Muldner book (C for Java Programmers) might appear most suitable as an aid, remember that the numbering of topics in the C outline refers to the Kernighan and Ritchie reference. You can easily map it to the Muldner (or any other standard text) book, though.


    Discussion among students should never include pending assignments. This means the assigned labs. Questions relating to them should be addressed only to the professor or the graduate assistant. Violations of this policy are breaches of the code of ethics of the ACM and of Villanova University's academic integrity policy (you need to scroll down the page to find the part about academic integrity), with which you should acquaint yourself. In previous courses you may have been encouraged to work in groups on your programming assignments, and there are certainly pedagogical reasons for that. However, all labs here are to be individual products (and there are pedagogical reasons for this!). < p>

    Graduate Assistant

    Akhil Tadakamalla (click to send him email) will be the TA for our course. His regular hours will be Monday afternoons from 4:30 to 5:30 in MSC 158 (the Department's Software Engineering Lab). He'll also be available for appointments at other times, if you email him a request for one. He'll help catch you up if you miss any lectures, and he'll be able to field your questions on pending labs and exams.

    Presentation Materials

    Chapter 1 in K&P
    Chapter 2 in K&P
    Chapter 3 in K&P
    Chapter 4 in K&P, through sed
    Chapter 4 in K&P: awk
    Chapter 5 in K&P

    C1: Sample Program and Some i/o
    C2: The Compilation Process
    C4: Storage Classes
    C5a: Review of Pointers
    C5b: Review of <string.h>
    C6: Review of Structs
    C8: Arrays of Strings

    Perl: Unit 1
    Perl: Unit 2
    Perl: Unit 3
    Perl: Unit 4
    Perl: Unit 5

    Students with Disabilities:

    It is the policy of Villanova to make reasonable academic accommodations for qualified individuals with disabilities. If you are a person with a disability, please check out the Office of Disability Services' Web site.

    UNIX Accounts, Email and Lab Submissions

    Everyone in this class will have a UNIX account on our departmental Sun cluster. Accessing it is described on the department website. For new accounts, your initial login (that's UNIX for "username") and password will be described in class. Try it soon (that will be your first homework assignment), and let me know if there are any problems.

    In general I will be sending announcements to your official ( Villanova email address (not your UNIX email, which we'll discuss in class). Make sure you check it several times a week.

    Your labs will be done on those departmental systems (even if you also have UNIX accounts elsewhere). The process for submitting them is described in this video.

    Last updated April 29, 2013