Assignment title: Information
CSC2408
Software Development Tools
Introductory Book
Semester 2, 2016Published by
The University of Southern Queensland
Toowoomba, Queensland 4350
Australia
http://www.usq.edu.au
c University of Southern Queensland, 2016.2
Copyrighted materials reproduced herein are used under the provisions of
the Copyright Act 1968 as amended, or as a result of application to the
copyright owner.
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means electronic, mechanical,
photocopying, recording or otherwise without prior permission.Contents
Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Course Organization . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Resource Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Study Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Text book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Assessment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Course Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Study Desk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Study Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Assignment 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Assignment 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Assignment 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
34 CSC2408—Software Development Tools
Getting started
The Current Students website
provides links to essential information which will assist you in your studies
at USQ. Use this site as a reference point to find information on:
• getting started
• organising enrolment
• assignment
• learning support
• student services
• student support
• opportunities
• graduation and beyond
Introduction
Welcome to the course CSC2408, Software Development Tools. The aim of
this course is to give you a sound basic knowledge of the most important tools
available under the Unix operating system. This is particularly important
as many of the courses which you will undertake require use of Unix, and
appropriate use of the tools provided will make your practical work much
easier to complete.
Although the focus of this course is on Unix tools, many of the tools that
you will use are generic. That is, tools of very similar functionality, though
most likely with a different interface, exist under other operating systems.
Hence Unix-specific knowledge gained in this course can be transferred later
to other operating environments.
A look at the table of contents of the Study Book will indicate the topics
covered. Note that installing Linux is not an assessable part of the course —
we assume that you have used the materials available on the Departmental
DVD-ROM set to install Linux.
This course is user-focused; we concentrate entirely on tools used by the
general user, rather than the system administrator. System administration
is covered by another course by name of System and Security Administration.
c University of Southern QueenslandCSC2408—Software Development Tools 5
Course Organization
The Study Book together with the Study Schedule on page 10 of this book
are your main guides to completing this course. You should work through
the Study Guide at the rate described in the Study Schedule. Many of the
exercises in the Study Book must be completed and handed in for assessment. It is strongly recommended that you attempt all exercises, whether
or not they are assessable. Be aware that skills and knowledge gained from
completing non-assessable exercises may still be examined in the examination.
Resource Materials
Study Book
This is your primary reference. It contains some original material which will
be needed to complete exercises, but most of the study material is derived
from the textbook. The Study Book contains a large number of exercises;
many of these must be completed and handed in for assessment.
Text book
There are a number of excellent texts about the Unix operating system.
Some are brief introductions, while others are much wider in scope. Some
texts also include some programming guidance. We have chosen the A Practical Guide to Linux Commands, Editors, and Shell Programming by Sobell.
This is an excellent book. It is perhaps less tutorial in style than some
other books, but it contains a wealth of detailed, well organized information. While it is not the appropriate choice for someone wanting a quick
introduction to Unix, it is ideal as a long term companion.
You may choose to use or consult other Unix texts rather than the recommended text. This is acceptable and as long as you are able to complete the
exercises and can cover the conceptual material contained in chapters 2, 3
and 4.
Readings
These are supporting documentation not covered by the textbook. Also
included for your convenience are copies of some Unix man pages. The
c University of Southern Queensland6 CSC2408—Software Development Tools
largest part of the Readings is the complete GNU Make manual, which you
should find useful in many other courses.
Course DVD-ROM
The course DVD-ROM contains a complete pre-installed Virtual Debian
system created from the Department's Debian/GNU Linux Distribution.
This DVD-ROM is for emergency use only. It is for students having trouble
installing Debian Linux on their computer—they will have access to a Linux
distribution that will allow them to do the exercises and assignments without
falling behind—while they sort out the problems of their installation.
A virtual operating system is no substitute for an installed operating system—
remember this is not the only course you will do that will require access to
a Linux operating system—it is far better to install the Operating System
rather than rely on a virtual system.
WWW
All course material is available from the Course Home Page accessible via
the USQStudyDesk
This is important!
The course webpage described above is your primary point of
contact with the university for this course. You can submit assignments via this site, and also retrieve results and feedback.
Assessment
You are required to complete three (3) assignments and an examination.
Details of due dates and weighting appear in the Table below and in the
assignment specifications later in this book. The course specification can be
accessed via the course home page.
As there are three(3) assignments you must complete them in a timely manner. In particular, you must ensure that you install Linux early in the
semester so that you can proceed with the assignments.
c University of Southern QueenslandCSC2408—Software Development Tools 7
What and how to hand in
The course webpage contains a link for you to submit an assignment. Penalties will apply for late submissions (see the course specification).
Normally Do not submit via email. You, however, need to
contact the examiner to get a permission if you are restricted
from the Internet.
Here is a good way of creating the assignment text file (the first of the two
items above). Have two terminal or windows open on your screen. One is a
standard window used to type in the commands and inspect the result. The
second one contains an editor session. Now try out the commands needed
for the assignment in the first window; when you get it right highlight (click
and drag the left mouse button) the command and its response. Then paste
into the editor session using the middle mouse button. If the text you want
to highlight is longer than a screenfull either copy and paste a screenfull at
a time or do the following to highlight it (we assume a three button mouse)
before a single paste operation.
• Scroll up in the window using the middle mouse button while pointing
at the scroll bar.
• Highlight the initial part of the text by click and dragging with the
left mouse button.
• Scroll down to the end of the text to be selected.
• Extend your initial selection by click and dragging the right mouse
button.
How to Lay Out Assignments
The powerful text editor vim will be introduced in this course, you hence
have to use vim (or vim) to edit all three assignments. The submission
by any other word processing software package(such as Microsoft Word or
Writer) are NOT acceptable. In addition, you have to use L ATEX to process
A2 & A3 before making submission for grading.
Suppose a Question in an Assignment is What is inode?, your answer to it
should indicate clearly which question using some suitable marker like
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Question 2: What is an inode?
c University of Southern Queensland8 CSC2408—Software Development Tools
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
inode is a data structure that contains information about a file.
An inode for a file contains the file's length, the times the file
was last accessed and modified, ......
It is vitally important that your assignment is clearly laid out. It must
be a straightforward matter for the examiner to determine that you have
completed each question satisfactorily. We want quality not quantity, nor
the amount of time you sent on it. Poorly organized submissions will be
rejected.
Assignment Results and Feedback
Assignment results will be posted on your StudyDesk. It is your responsibility to check the assignment link regularly to determine your result.
c University of Southern QueenslandCSC2408—Software Development Tools 9
Course Support
Support for this course is available for all enrolled students. The main
avenues for help, in order, are
• The discussion forums on the course web pages. Any query posted
to the course forums should be answered by anyone who can. It is
not just to be a forum for the lecturer of the course but as a general
communication forum for all the students in the course.
• If you need to communicate to the examiner of the course then send
email via message facility available on the course web pages.
• You can also communicate to the lecturer of the course via Ask USQ
– from the homepage: UConnect > UAsk > Ask USQ.
Study Desk
Your StudyDesk in UConnect gives access to a home page for every course
in which you are currently enrolled. Content available from the course home
page will vary according to the teaching requirements of the course, but may
include:
• course materials and resources,
• electronic discussion facilities,
• access to past examination papers.
As each course has specific learning requirements, availability of these features will vary between courses.
Links
UConnect gives access to the Library and the Academic Learning Support
site, as well as the Quick Links list of University sections and services.
c University of Southern Queensland10 CSC2408—Software Development Tools
Study Schedule
The following table contains a recommended study pattern which will see
you handing in all there assignments on time.
The first five weeks are probably a little easier than the later weeks. This
allows you plenty of time to get used to Linux, which you must do as soon
as possible. Weeks 6–8 will be pretty hard going, as other assignments will
be no doubt due as well during this period.
If at all possible you should try to "get ahead" of this schedule. For instance,
try and finish assignment 1 early, and then make a start on assignment 2 as
soon as possible. This also applies to assignment 3, as there is little time
between handing in assignment 2 and when assignment 3 is due.
Week Module Topics Assignment
1 M1 Linux OS Overview
2 M2.1–2.4 Shell commands
3 M2.5–2.8 Filesystem
4 M2.9–2.10 Interactive Editors
5 M2.11–2.12 Batch Editor - sed A1 Due (see course spec)
6, 7 R E C E S S
8 M3 Document Preparation
9 Shell Scripting
10 Bash Scripting
11
12 M4 Software Project
13 Management A2 Due (see course spec)
14 M5 Software
15 Version Control A3 Due (see course spec)
16 E X A M I N A T I O N S
17 E X A M I N A T I O N S
c University of Southern QueenslandCSC2408—Software Development Tools11
Assignment 1
Weight 15%
Due Date See course specification
1. It is compulsory to use either vi or emacs to edit the assignment
file, in which the answer to all questions must be included.
2. The file must be compressed by either use tar or zip before
submission.
Question 1. (10 marks)
Assume that a file's permissions give you read and write access.
• What is the difference between ls -l and ls -ld?
• If a directory has "r" only access, can you change into the directory?
• If a directory has "x" only access, can you list the content of that
directory?
• What operations can you perform on the file if it is in a directory
which has "r" (read) only access?
• What operations can you perform on the file if it is in a directory
which has "x" (execute) only access?
Question 2. (10 marks)
Answer the following questions about regular expressions (note not globing
), give examples if necessary.
• what is the difference between ab.cd and ab*cd?
• what is the difference between ab.*cd and abb*cd ?
• what is the difference between ^abc and ^abc$?
• what is the difference between [abc]d and [^abc]d?
• What is the difference between [A-Z][_a-zA-Z0-9]* and [A-Z_][a-zA-Z0-9]*?
(Note the regular expression "x*$" could be described as a line has "zero or
more x at the end of the line".)
c University of Southern Queensland12 CSC2408—Software Development Tools
Question 3. (10 marks)
• Give the command-line of using find to list all the files having specific
username in the current directory
• Give the command-line of using find to list all the subdirectories in
the current directory
• Use find to produce a long ls listing of all files in /usr/bin that are
more than 750Kb long. Give all the arguments and options in the
following command-line
find ..... -exec ls -l {} \;
Note that pay special attention to the arguments or options. The
semicolon must be escaped, but not the {}.
Question 4. (10 marks)
Create a big file (If you don't know how to create a big file, try ls -l
/usr/bin > bigfile). Create two copies of it using cp, and call them
big1 and big2.
• Give the command-line of compressing big1 using gzip (should produce big1.gz).
• Compress big2 using bzip2(should produce big2.bz2).
• Give the command-line of comparing the sizes of the compressed files
(big1.gz and big2.bz2) and the original (bigfile) using ls -l
• Give the command-line of checking the file type of compressed files
and the original.
• Give the command-line of displaying the contents of big1.gz using
zcat and big2.bz2 but using bzcat without uncompress them. (You
may pipe the output to head -10 to avoid lots of output).
Question 5. (10 marks)
• Use tar to create an archive (don't use the z or j option) of all the
files in the current directory.
• Compress the tar file with gzip.
c University of Southern QueenslandCSC2408—Software Development Tools13
• View the contents of archive with
gunzip -c gzipped-tar-file | tar tfv -
• View without using gunzip but use the tar instead. (Hint: find the
right option to use from the man page).
• Create a subdirectory of the current directory.
• Use tar to unpack the archive into that directory at the current directory.
Question 6. (10 marks)
Assume you have a text file called file. Explain the following commandlines.
1. sed "s/the/a/g" file
2. sed -n "s/[A-Z]/&/gp" file
3. sed "32,45 s/[()]//g" file
4. sed "/^$/d" file
5. sed "s/\([0-9]\)-\([0-9]\)/\1\2/g" file
6. sed "80q" file
For example, sed 's/fox/ox/g' file will replace all occurance of fox with
ox and not the just the first one in file.
c University of Southern Queensland14 CSC2408—Software Development Tools
Assignment 2
Weight 15%
Due Date See course specification
Instructions:
All L ATEX files are edited by using vi (or emacs) editor. The submission by any other word processing software(such as Microsoft
Word or Writer) are NOT acceptable.
Your submission include the following three items in a compressed
file(You may use tar utility).
• A PDF file for Question 1.
• A L ATEX text file for Question 2, 3, 4.
• One PDF file generated from the above L ATEX file.
Question 1. (5 marks)
Create a L ATEX document, which should be in 11point font
• Add a title with your name and the date
• Add a table of contents
• It contains at least one section introducing yourself and all the courses
you are studying at USQ.
• Include a piece of verbatim text – this might be a program (either
Bash scripts or C source codes ) or a program fragment.
• It also contains the unnumbered following formulae.
x =
−b ± √b2 − 4ac
2a
and
• Typeset the following numbered mathematical formula (1).
∆(x) =
1 if x > 0
−1 if x < 0
0 otherwise
(1)
c University of Southern QueenslandCSC2408—Software Development Tools15
• Create a floating table with caption. It should look just like the one
in Table 1, except that the table number will be different(Don't have
to use the multirow package).
Category Tool
Command Description
Editor emacs Emacs extensible text editor
vi Visual editor
Scripting bash GNU Bourne-Again SHell
perl Practical Extraction and Report Language
Document RCS Revision Control System
Management L ATEX Document Typesetting Package
make Managing Project Utility
Table 1: Some Unix Utilities
• Include a short bibliography of you, along with your recent photo.
Question 2. (20 marks)
Write a well structured Bash script to delete comments from a C program. In
Bash script, you may use sed commands or other Linux utilities. The standard comment or commentline in C programs starts with the two-characters
token (/*) and ends with the two-character token (*/). Assume that each
comment line contains the start and end tokens without any other statements before and after. You need to pay attention to the following cases:
/* a comment line in a C program */
printf("It is /* NOT a comment line */\n");
x = 5; /* This is an assignment, not a comment line */
[TAB][SPACE] /* another empty comment line here */
/* another weird line, but not a comment line */ y = 0;
You can test your Bash script on a C program containing all above four
lines. The expected output should look like
printf("It is /* NOT a comment line */\n");
x = 5; /* This is an assignment, not a comment line */
/* another weird line, but not a comment line */ y = 0;
where TAB and SPACE stands for the Tab key strokes or white spaces.
c University of Southern Queensland16 CSC2408—Software Development Tools
Question 3. (15 marks)
Write a short script that tells you whether the permissions for two files,
whose names are given as arguments to the script, are identical. If the
permissions for the two files are identical, output the common permission
field. Otherwise, output each filename followed by its permission field.
Note that you should
1. Add comments where needed and appropriate.
2. Verify the total number of arguments in the command line.
3. Try using the cut utility.
Question 4. (20 marks)
Write a short but well structured Bash script that, given the name of a file
as an argument, reads the file name and creates a new file containing only
those lines which have one word in it. Here is an example of the input file.
This is a special text file
There
are 20 students in the class.
[TAB][SPACE] Nearly
half of them are enrolled in FoS. The rest are in
Faculty-Of-ES.
The output file from the script should look like
There
[TAB][SPACE] Nearly
Faculty-Of-ES.
Ensure the script has error and robustness checking. All input filename and
output filename should be given as the arguments of the command line when
the script is executed.
c University of Southern QueenslandCSC2408—Software Development Tools17
Assignment 3
Weight 10%
Due Date See course specification
Instructions:
• use vi (or emacs) to edit the answer for each question in a L ATEX
document.
• then apply Linux utilities (such as pdflatex if installed) to produce a
PDF file.
The submission should be a compressed file, in which a PDF file
is included.
Question 1. (15 marks)
Suppose there are two C source (transaction.c and reports.c) and two
header files (trans.h and reps.h). Write a Makefile/makefile using
explicit rules that reflects the following relationships:
1. The C source files transaction.c and reports.c are compiled
to produce an executable accts.
2. transaction.c and reports.c include a header file accts.h
3. The header file accts.h is composed of two other header files:
trans.h and reps.h.
(Note that any Linux commands or utilities can be used as the construction
command of the makefile if necessary)
Question 2. (15 marks)
Write a makefile that reflects the dependency relationship between
a set of files which comprise an application as shown in Figure 1.
The arrows point to the dependent file from the file on which it
depends. In other words,
c University of Southern Queensland18 CSC2408—Software Development Tools
Figure 1:
1. The application card-exe is created by linking together the
object modules main.o and cards.o and the object library liboutput.a.
2. The object library is built from the object file output.o and
deck.o; these object files depend upon their corresponding
source files.
3. output.o additionally depends on deck.h
4. The header file cards.h contains calling definition (prototypes)
for the functions in cards.o and deck.h containing prototypes
for deck.c
5. all files which call functions defined in deck.c will need
to include deck.h.
6. main.c calls functions from cards.c and output.c, cards.h and
output.h must be included in main.c
Question 3. (10 marks)
Use a small text file to experiment with the RCS system. Note that
RCS treats all ASCII file the same way; the files do not necessarily
be programs, though usually are programs. Specially you should
• Place a $Log$ keyword in the file
• Complete a set of check in operations which result in the RCS
file structure depicted in Figure 2.
You will need to make small changes to the source file between
check in operations.
c University of Southern QueenslandCSC2408—Software Development Tools19
2.1
1.2
2.2
2.1.1.1
1.2.2.1 1.2.1.1
1.2.1.2
1.2.1.1.1.1
1.1
Figure 2:
• Associate a symbolic name with revision 2.1.1.1
• Make the branch containing revision 2.1.1.1 the default branch
• Use rlog to verify the RCS structure.
Give all the command or command lines used in each step of activities,
along with a brief description.
c University of Southern QueenslandCSC2408
Software Development Tools
Introductory Book
Semester 2, 2016Published by
The University of Southern Queensland
Toowoomba, Queensland 4350
Australia
http://www.usq.edu.au
c University of Southern Queensland, 2016.2
Copyrighted materials reproduced herein are used under the provisions of
the Copyright Act 1968 as amended, or as a result of application to the
copyright owner.
No part of this publication may be reproduced, stored in a retrieval system or transmitted in any form or by any means electronic, mechanical,
photocopying, recording or otherwise without prior permission.Contents
Getting started . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
Course Organization . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Resource Materials . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Study Book . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Text book . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
Assessment . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
Course Support . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Study Desk . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Study Schedule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
Assignment 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
Assignment 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Assignment 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
34 CSC2408—Software Development Tools
Getting started
The Current Students website
provides links to essential information which will assist you in your studies
at USQ. Use this site as a reference point to find information on:
• getting started
• organising enrolment
• assignment
• learning support
• student services
• student support
• opportunities
• graduation and beyond
Introduction
Welcome to the course CSC2408, Software Development Tools. The aim of
this course is to give you a sound basic knowledge of the most important tools
available under the Unix operating system. This is particularly important
as many of the courses which you will undertake require use of Unix, and
appropriate use of the tools provided will make your practical work much
easier to complete.
Although the focus of this course is on Unix tools, many of the tools that
you will use are generic. That is, tools of very similar functionality, though
most likely with a different interface, exist under other operating systems.
Hence Unix-specific knowledge gained in this course can be transferred later
to other operating environments.
A look at the table of contents of the Study Book will indicate the topics
covered. Note that installing Linux is not an assessable part of the course —
we assume that you have used the materials available on the Departmental
DVD-ROM set to install Linux.
This course is user-focused; we concentrate entirely on tools used by the
general user, rather than the system administrator. System administration
is covered by another course by name of System and Security Administration.
c University of Southern QueenslandCSC2408—Software Development Tools 5
Course Organization
The Study Book together with the Study Schedule on page 10 of this book
are your main guides to completing this course. You should work through
the Study Guide at the rate described in the Study Schedule. Many of the
exercises in the Study Book must be completed and handed in for assessment. It is strongly recommended that you attempt all exercises, whether
or not they are assessable. Be aware that skills and knowledge gained from
completing non-assessable exercises may still be examined in the examination.
Resource Materials
Study Book
This is your primary reference. It contains some original material which will
be needed to complete exercises, but most of the study material is derived
from the textbook. The Study Book contains a large number of exercises;
many of these must be completed and handed in for assessment.
Text book
There are a number of excellent texts about the Unix operating system.
Some are brief introductions, while others are much wider in scope. Some
texts also include some programming guidance. We have chosen the A Practical Guide to Linux Commands, Editors, and Shell Programming by Sobell.
This is an excellent book. It is perhaps less tutorial in style than some
other books, but it contains a wealth of detailed, well organized information. While it is not the appropriate choice for someone wanting a quick
introduction to Unix, it is ideal as a long term companion.
You may choose to use or consult other Unix texts rather than the recommended text. This is acceptable and as long as you are able to complete the
exercises and can cover the conceptual material contained in chapters 2, 3
and 4.
Readings
These are supporting documentation not covered by the textbook. Also
included for your convenience are copies of some Unix man pages. The
c University of Southern Queensland6 CSC2408—Software Development Tools
largest part of the Readings is the complete GNU Make manual, which you
should find useful in many other courses.
Course DVD-ROM
The course DVD-ROM contains a complete pre-installed Virtual Debian
system created from the Department's Debian/GNU Linux Distribution.
This DVD-ROM is for emergency use only. It is for students having trouble
installing Debian Linux on their computer—they will have access to a Linux
distribution that will allow them to do the exercises and assignments without
falling behind—while they sort out the problems of their installation.
A virtual operating system is no substitute for an installed operating system—
remember this is not the only course you will do that will require access to
a Linux operating system—it is far better to install the Operating System
rather than rely on a virtual system.
WWW
All course material is available from the Course Home Page accessible via
the USQStudyDesk
This is important!
The course webpage described above is your primary point of
contact with the university for this course. You can submit assignments via this site, and also retrieve results and feedback.
Assessment
You are required to complete three (3) assignments and an examination.
Details of due dates and weighting appear in the Table below and in the
assignment specifications later in this book. The course specification can be
accessed via the course home page.
As there are three(3) assignments you must complete them in a timely manner. In particular, you must ensure that you install Linux early in the
semester so that you can proceed with the assignments.
c University of Southern QueenslandCSC2408—Software Development Tools 7
What and how to hand in
The course webpage contains a link for you to submit an assignment. Penalties will apply for late submissions (see the course specification).
Normally Do not submit via email. You, however, need to
contact the examiner to get a permission if you are restricted
from the Internet.
Here is a good way of creating the assignment text file (the first of the two
items above). Have two terminal or windows open on your screen. One is a
standard window used to type in the commands and inspect the result. The
second one contains an editor session. Now try out the commands needed
for the assignment in the first window; when you get it right highlight (click
and drag the left mouse button) the command and its response. Then paste
into the editor session using the middle mouse button. If the text you want
to highlight is longer than a screenfull either copy and paste a screenfull at
a time or do the following to highlight it (we assume a three button mouse)
before a single paste operation.
• Scroll up in the window using the middle mouse button while pointing
at the scroll bar.
• Highlight the initial part of the text by click and dragging with the
left mouse button.
• Scroll down to the end of the text to be selected.
• Extend your initial selection by click and dragging the right mouse
button.
How to Lay Out Assignments
The powerful text editor vim will be introduced in this course, you hence
have to use vim (or vim) to edit all three assignments. The submission
by any other word processing software package(such as Microsoft Word or
Writer) are NOT acceptable. In addition, you have to use L ATEX to process
A2 & A3 before making submission for grading.
Suppose a Question in an Assignment is What is inode?, your answer to it
should indicate clearly which question using some suitable marker like
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ Question 2: What is an inode?
c University of Southern Queensland8 CSC2408—Software Development Tools
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
inode is a data structure that contains information about a file.
An inode for a file contains the file's length, the times the file
was last accessed and modified, ......
It is vitally important that your assignment is clearly laid out. It must
be a straightforward matter for the examiner to determine that you have
completed each question satisfactorily. We want quality not quantity, nor
the amount of time you sent on it. Poorly organized submissions will be
rejected.
Assignment Results and Feedback
Assignment results will be posted on your StudyDesk. It is your responsibility to check the assignment link regularly to determine your result.
c University of Southern QueenslandCSC2408—Software Development Tools 9
Course Support
Support for this course is available for all enrolled students. The main
avenues for help, in order, are
• The discussion forums on the course web pages. Any query posted
to the course forums should be answered by anyone who can. It is
not just to be a forum for the lecturer of the course but as a general
communication forum for all the students in the course.
• If you need to communicate to the examiner of the course then send
email via message facility available on the course web pages.
• You can also communicate to the lecturer of the course via Ask USQ
– from the homepage: UConnect > UAsk > Ask USQ.
Study Desk
Your StudyDesk in UConnect gives access to a home page for every course
in which you are currently enrolled. Content available from the course home
page will vary according to the teaching requirements of the course, but may
include:
• course materials and resources,
• electronic discussion facilities,
• access to past examination papers.
As each course has specific learning requirements, availability of these features will vary between courses.
Links
UConnect gives access to the Library and the Academic Learning Support
site, as well as the Quick Links list of University sections and services.
c University of Southern Queensland10 CSC2408—Software Development Tools
Study Schedule
The following table contains a recommended study pattern which will see
you handing in all there assignments on time.
The first five weeks are probably a little easier than the later weeks. This
allows you plenty of time to get used to Linux, which you must do as soon
as possible. Weeks 6–8 will be pretty hard going, as other assignments will
be no doubt due as well during this period.
If at all possible you should try to "get ahead" of this schedule. For instance,
try and finish assignment 1 early, and then make a start on assignment 2 as
soon as possible. This also applies to assignment 3, as there is little time
between handing in assignment 2 and when assignment 3 is due.
Week Module Topics Assignment
1 M1 Linux OS Overview
2 M2.1–2.4 Shell commands
3 M2.5–2.8 Filesystem
4 M2.9–2.10 Interactive Editors
5 M2.11–2.12 Batch Editor - sed A1 Due (see course spec)
6, 7 R E C E S S
8 M3 Document Preparation
9 Shell Scripting
10 Bash Scripting
11
12 M4 Software Project
13 Management A2 Due (see course spec)
14 M5 Software
15 Version Control A3 Due (see course spec)
16 E X A M I N A T I O N S
17 E X A M I N A T I O N S
c University of Southern QueenslandCSC2408—Software Development Tools11
Assignment 1
Weight 15%
Due Date See course specification
1. It is compulsory to use either vi or emacs to edit the assignment
file, in which the answer to all questions must be included.
2. The file must be compressed by either use tar or zip before
submission.
Question 1. (10 marks)
Assume that a file's permissions give you read and write access.
• What is the difference between ls -l and ls -ld?
• If a directory has "r" only access, can you change into the directory?
• If a directory has "x" only access, can you list the content of that
directory?
• What operations can you perform on the file if it is in a directory
which has "r" (read) only access?
• What operations can you perform on the file if it is in a directory
which has "x" (execute) only access?
Question 2. (10 marks)
Answer the following questions about regular expressions (note not globing
), give examples if necessary.
• what is the difference between ab.cd and ab*cd?
• what is the difference between ab.*cd and abb*cd ?
• what is the difference between ^abc and ^abc$?
• what is the difference between [abc]d and [^abc]d?
• What is the difference between [A-Z][_a-zA-Z0-9]* and [A-Z_][a-zA-Z0-9]*?
(Note the regular expression "x*$" could be described as a line has "zero or
more x at the end of the line".)
c University of Southern Queensland12 CSC2408—Software Development Tools
Question 3. (10 marks)
• Give the command-line of using find to list all the files having specific
username in the current directory
• Give the command-line of using find to list all the subdirectories in
the current directory
• Use find to produce a long ls listing of all files in /usr/bin that are
more than 750Kb long. Give all the arguments and options in the
following command-line
find ..... -exec ls -l {} \;
Note that pay special attention to the arguments or options. The
semicolon must be escaped, but not the {}.
Question 4. (10 marks)
Create a big file (If you don't know how to create a big file, try ls -l
/usr/bin > bigfile). Create two copies of it using cp, and call them
big1 and big2.
• Give the command-line of compressing big1 using gzip (should produce big1.gz).
• Compress big2 using bzip2(should produce big2.bz2).
• Give the command-line of comparing the sizes of the compressed files
(big1.gz and big2.bz2) and the original (bigfile) using ls -l
• Give the command-line of checking the file type of compressed files
and the original.
• Give the command-line of displaying the contents of big1.gz using
zcat and big2.bz2 but using bzcat without uncompress them. (You
may pipe the output to head -10 to avoid lots of output).
Question 5. (10 marks)
• Use tar to create an archive (don't use the z or j option) of all the
files in the current directory.
• Compress the tar file with gzip.
c University of Southern QueenslandCSC2408—Software Development Tools13
• View the contents of archive with
gunzip -c gzipped-tar-file | tar tfv -
• View without using gunzip but use the tar instead. (Hint: find the
right option to use from the man page).
• Create a subdirectory of the current directory.
• Use tar to unpack the archive into that directory at the current directory.
Question 6. (10 marks)
Assume you have a text file called file. Explain the following commandlines.
1. sed "s/the/a/g" file
2. sed -n "s/[A-Z]/&/gp" file
3. sed "32,45 s/[()]//g" file
4. sed "/^$/d" file
5. sed "s/\([0-9]\)-\([0-9]\)/\1\2/g" file
6. sed "80q" file
For example, sed 's/fox/ox/g' file will replace all occurance of fox with
ox and not the just the first one in file.
c University of Southern Queensland14 CSC2408—Software Development Tools
Assignment 2
Weight 15%
Due Date See course specification
Instructions:
All L ATEX files are edited by using vi (or emacs) editor. The submission by any other word processing software(such as Microsoft
Word or Writer) are NOT acceptable.
Your submission include the following three items in a compressed
file(You may use tar utility).
• A PDF file for Question 1.
• A L ATEX text file for Question 2, 3, 4.
• One PDF file generated from the above L ATEX file.
Question 1. (5 marks)
Create a L ATEX document, which should be in 11point font
• Add a title with your name and the date
• Add a table of contents
• It contains at least one section introducing yourself and all the courses
you are studying at USQ.
• Include a piece of verbatim text – this might be a program (either
Bash scripts or C source codes ) or a program fragment.
• It also contains the unnumbered following formulae.
x =
−b ± √b2 − 4ac
2a
and
• Typeset the following numbered mathematical formula (1).
∆(x) =
1 if x > 0
−1 if x < 0
0 otherwise
(1)
c University of Southern QueenslandCSC2408—Software Development Tools15
• Create a floating table with caption. It should look just like the one
in Table 1, except that the table number will be different(Don't have
to use the multirow package).
Category Tool
Command Description
Editor emacs Emacs extensible text editor
vi Visual editor
Scripting bash GNU Bourne-Again SHell
perl Practical Extraction and Report Language
Document RCS Revision Control System
Management L ATEX Document Typesetting Package
make Managing Project Utility
Table 1: Some Unix Utilities
• Include a short bibliography of you, along with your recent photo.
Question 2. (20 marks)
Write a well structured Bash script to delete comments from a C program. In
Bash script, you may use sed commands or other Linux utilities. The standard comment or commentline in C programs starts with the two-characters
token (/*) and ends with the two-character token (*/). Assume that each
comment line contains the start and end tokens without any other statements before and after. You need to pay attention to the following cases:
/* a comment line in a C program */
printf("It is /* NOT a comment line */\n");
x = 5; /* This is an assignment, not a comment line */
[TAB][SPACE] /* another empty comment line here */
/* another weird line, but not a comment line */ y = 0;
You can test your Bash script on a C program containing all above four
lines. The expected output should look like
printf("It is /* NOT a comment line */\n");
x = 5; /* This is an assignment, not a comment line */
/* another weird line, but not a comment line */ y = 0;
where TAB and SPACE stands for the Tab key strokes or white spaces.
c University of Southern Queensland16 CSC2408—Software Development Tools
Question 3. (15 marks)
Write a short script that tells you whether the permissions for two files,
whose names are given as arguments to the script, are identical. If the
permissions for the two files are identical, output the common permission
field. Otherwise, output each filename followed by its permission field.
Note that you should
1. Add comments where needed and appropriate.
2. Verify the total number of arguments in the command line.
3. Try using the cut utility.
Question 4. (20 marks)
Write a short but well structured Bash script that, given the name of a file
as an argument, reads the file name and creates a new file containing only
those lines which have one word in it. Here is an example of the input file.
This is a special text file
There
are 20 students in the class.
[TAB][SPACE] Nearly
half of them are enrolled in FoS. The rest are in
Faculty-Of-ES.
The output file from the script should look like
There
[TAB][SPACE] Nearly
Faculty-Of-ES.
Ensure the script has error and robustness checking. All input filename and
output filename should be given as the arguments of the command line when
the script is executed.
c University of Southern QueenslandCSC2408—Software Development Tools17
Assignment 3
Weight 10%
Due Date See course specification
Instructions:
• use vi (or emacs) to edit the answer for each question in a L ATEX
document.
• then apply Linux utilities (such as pdflatex if installed) to produce a
PDF file.
The submission should be a compressed file, in which a PDF file
is included.
Question 1. (15 marks)
Suppose there are two C source (transaction.c and reports.c) and two
header files (trans.h and reps.h). Write a Makefile/makefile using
explicit rules that reflects the following relationships:
1. The C source files transaction.c and reports.c are compiled
to produce an executable accts.
2. transaction.c and reports.c include a header file accts.h
3. The header file accts.h is composed of two other header files:
trans.h and reps.h.
(Note that any Linux commands or utilities can be used as the construction
command of the makefile if necessary)
Question 2. (15 marks)
Write a makefile that reflects the dependency relationship between
a set of files which comprise an application as shown in Figure 1.
The arrows point to the dependent file from the file on which it
depends. In other words,
c University of Southern Queensland18 CSC2408—Software Development Tools
Figure 1:
1. The application card-exe is created by linking together the
object modules main.o and cards.o and the object library liboutput.a.
2. The object library is built from the object file output.o and
deck.o; these object files depend upon their corresponding
source files.
3. output.o additionally depends on deck.h
4. The header file cards.h contains calling definition (prototypes)
for the functions in cards.o and deck.h containing prototypes
for deck.c
5. all files which call functions defined in deck.c will need
to include deck.h.
6. main.c calls functions from cards.c and output.c, cards.h and
output.h must be included in main.c
Question 3. (10 marks)
Use a small text file to experiment with the RCS system. Note that
RCS treats all ASCII file the same way; the files do not necessarily
be programs, though usually are programs. Specially you should
• Place a $Log$ keyword in the file
• Complete a set of check in operations which result in the RCS
file structure depicted in Figure 2.
You will need to make small changes to the source file between
check in operations.
c University of Southern QueenslandCSC2408—Software Development Tools19
2.1
1.2
2.2
2.1.1.1
1.2.2.1 1.2.1.1
1.2.1.2
1.2.1.1.1.1
1.1
Figure 2:
• Associate a symbolic name with revision 2.1.1.1
• Make the branch containing revision 2.1.1.1 the default branch
• Use rlog to verify the RCS structure.
Give all the command or command lines used in each step of activities,
along with a brief description.
c University of Southern Queensland