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