Telcom 2300: Software Tools & Techniques
Updated 26 August 2003
History of Updates to this
page
Telecommunication 2300 introduces C and Unix in the context of telecommunications and information system problem solving. The C language and the Unix operating system have continuously grown in importance since their development in the early 1970's. Recently, Unix served as the basis for much of the thinking about the Portable Operating System Interface -- POSIX. Additionally, a variant of Unix, Linux is experinecing explosive growth in popularity. Unix is also the most common operating system for machines on the Internet -- although machines running other operating systems (MacOS and MS Windows) are also part of the internet. Similarly, C has become the base language for C++ and has been the first language for the development of several important libraries such as the X Window System. Because of the opportunities presented, more and more people have been moving to C and Unix for project development over the last several years. This course will offer an overview of C and Unix, and, as time permits, will introduce the X Window System and C++ extensions to C.
Course
Goals
1.
Instructor Information
Dr. Joseph Kabara
Office: 702 IS
Phone: 624-9417
email: kabara@tele.pitt.edu
WWW: http://www2.sis.pitt.edu/~jkabara
Class Hours: Thursday 2:00 - 5:15, 405 IS
Office Hours: 4:00-5:00 Mon., Wed., and by appointment.
2.
Textbook
TBA
Reference:
Common
Desktop Environment FAQ
Open
Source
The
tutorials page off my home page
UNIX®
For Dummies®, 4th Edition By John R. Levine, Margaret Levine Young
Newmarch,
The X Window System and Motif, Addison Wesley, 1992
Schildt's
Turbo C/C++ The Complete Reference, Osborne McGraw-Hill.
Pohl,
C++ for C Programmers, Benjamin Cummings, 1989.
Scheifler,
Gettys and Newman, X Window System
Sobell,
A Practical Guide to Unix System V
Young,
The X Window System, Programming Applications with Xt
Martin
and Odell, Object Oriented Analysis and Design
Bronson
and Menconi, A First Book of ANSI C
Kernighan
and Ritchie, The C programming language
Peek,
Todino & Strang, Learning the Unix Operating System
Johnsonbaugh
& Kalin, Applications Programming in ANSI C
Van
Der Linden, Expert C Programming
Berg,
Threads Primer
3.
Grading and Evaluation
Letter Grade Point
Range
A 930-1000
A- 900-929
B+ 880-899
B 830-879
B- 800-829
C 650-799
F 0-649
4.
Course policies
·
Students
must do their programming assignments Unix workstations using the C compiler
there. Assignments are to be mailed to
(TBA) the subject must include tele2300 and the assignment #.
·
Assignments
submitted after the date they are due will be graded on the basis of a 10%
maximum point award reduction per week.
Thus an assignment worth 100 points and due in week 3 will be graded on
the basis of a maximum award of 90 points if received in week 4, 80 points in
week 5, etc.
·
The
descriptions of assignment requirements provided below specify the basic nature
of the assignment. Students who
complete the minimal requirements will receive 85% of the points. A perfect grade is reserved for students who
go beyond the minimal requirements in some way and make no mistakes in
execution of the basic requirements.
·
Code
that is not properly commented will receive a maximum of 50% of the points for
the assignment
·
The
instructor will adjust the schedule as needed if the lectures fall off the announced
schedule to allow time for you to work on the various assignments after the
related issues have been covered in class.
·
Students
who find themselves in situations where they will not be able to work on
schedule for business or personal reasons should petition the instructor in
advance and in writing providing: 1) a reason for the special schedule and, 2)
a copy of the proposed schedule. This personal schedule will become binding on
the student with the same grading provisions as the general schedule for the
class.
·
A
Few Words about Assignments and Requirements It is your responsibility to come
to class prepared to ask questions and explore problems related to the lecture
topic. If you are not prepared, the concepts discussed and the nuances of
the language will not be seen. You will
be at a significant disadvantage if you simply come to class with a clear head!
·
The
reading assignments for each class are to be done before class. The lecture will reflect on these. The lectures will not provide notes to
review after class to make the readings more intelligible.
·
The
programming assignments will be as meaningful as possible within the
constraints of a course. In the real
world, software systems are extremely complex and consist of thousands to
hundreds of thousands of lines of code.
You should anticipate many hours of work on some of your assignments to
make them work. If you take on a real
problem, the code you develop will be extensive.
·
The
final programming assignment is the only "real" assignment that will
be possible in this class. To make it
possible for you to work on this and other more complex assignments, you may
work in a team. This means you will
need to coordinate your efforts.
Grading will reflect group effort.
That is, more will be expected of projects completed in groups. Because of the energy required to coordinate
groups, it is recognized that the quality of a product of a group effort will
be somewhat less than a multiple of the number of people involved. At the same time, it should be more complete
and sophisticated than an effort completed by an individual. If you work in a
group, it is very important that you contribute in a timely fashion and be
cooperative about meetings.
·
Students
working in groups who "take a vacation" and then try take credit for
the work of your teammates will not be tolerated. They will receive a zero for the assignment.
·
Students
wishing to earn extra credit must first clear their proposed project with the
instructor.
·
Electronic
copy and/or personal demonstration are the only acceptable means of submission
for this course. Any work submitted on paper will be lost before grading unless
you make prior arrangements with the instructor.
·
I
reserve the right to modify course requirements administering surprise quizzes
for up to 50 points if I feel that
students are not pursuing a reasonable amount of course related reading,
writing and computing. Should this option be exercised, the point distribution
for grades will be changed accordingly.
·
You
are expected to check this page on a regular basis for any changes to the
problems and syllabus. All are subject to change as the course proceeds and
will be publicized in the updates section. Important updates will be emailed to
the class mailing list.
·
The
easiest means of contacting me is by electronic mail first
(kabara@tele.pitt.edu). This helps me organize my time, and ensures a more
accurate and efficient response outside of office hours. I read my electronic
mail throughout the day every day and will usually respond with an answer
within a few hours of reading it, and almost always the same day. If the nature
of your question requires an interactive session, please come to my office
during office hours as scheduled. If, for some unforeseen reason, I cannot make
office hours, I will announce that in class whenever possible. I do not make
appointments during office hours; I will be available on a first come, first
served.
·
You
are expected to read the assigned material before the associated lecture
5.
Project Details:
Final
Project:
Points
1 18 May Review
of Syllabus; Intro to C; Intro to Unix C syntax & Basic Unix comamnds Pohl: 1, 15 & 14, Sobell 1-4, 6
AB:
User Guide,
Advanced
User Guide
User
CDE
AB:
C users guide
2 25 May Data
types, storage, pointers, signals, GUI Unix tools (nedit, reading mail, net
surfing, editing html) Pohl:
6, 7, 8, 9 hello-world.c
user
environment 25
25
3 1 June Flow
Control, I/O, Unix file structure; Unix configuration files Pohl:
3,
13
AB:
CDE Advanced Guide good-hye world.c
Web
Page 25
25
4 8 June Functions,
Command line arguments, computer architecture in a networked world, code
version control, using /tmp, code documentation Pohl:
4,
14, A
5 15 June Passing functions by value & by reference, scope of
variables, man pages Pohl 5, 6
Sobell:
7, 8, 15 file dump 50
6 22 June Bit Operations, Arrays, Complex logic, core files,
finding files, process status disk space, quotas disk usage Pohl: 2, C
AB:
Adv. User Guide create a secure
directory
address
book read 25
50
7 29 June Unix Shell Commands, Shell Scripts, Functions, and
Aliases Sobell: 5 parse configuration file 50
8 6 July library
and header files Pohl 7,8, B merge address books 50
9 13 July make, Makefiles, compiling packages, structures and
linked lists Pohl: 9, 10
Sobell:
14
AB:
utilities socket communication
50
10 20 July Regular
Expression and File Manipulation Pohl:
12, 13
Sobell:
11, Part 3 appendix A-C package
installation 50
11 27 July Arrays
and Array Pointers, X window coding Pohl:
9, 10 shell script 50
12 3 Aug. Final
Exam Final Project
Final
Exam 300
100
Copyright
(C) 1999 Joseph Kabara
This
page is available at no charge to non-profit eduational institutions; you can
redistribute it and/or modify it under the terms of the GNU General Public
License as published by the Free Software Foundation; either version 2 of the
License, or (at your option) any later version.
For-profit
educational or training corporations must contact the original author for
licensing information.
This information is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.