Software Development - Web Access for Home

advertisement
Course Proposal
Software Development in a Linux Environment
Draft 2
April 10, 2002
Revised Nov. 13, 2002
Carol M. Hurwitz
Background: Much of the current curriculum is based on the Microsoft OS and
development tools. This course would cover tools that are in common use in the Linux
development community. There is now a presence of the Linux OS in the enterprise
environment. The Linux has been less prone to malicious attack than the Microsoft
platform and has also moved somewhat from an obscure, arcane platform to a GUI based
environment, rich in tools that are available without cost to the user.
Proposal: The purpose of this course is to expose the student to modern development
tools and methodology that are used in producing robust software in a timely fashion.
The emphasis is on practical applications, giving the students experience using the
modern tools. A project using the tools would be part of the course.
Choosing a language in which to develop software depends as much or more on the
available support tools for that language - good editors, good debuggers, profilers, and so
forth. Most highly skilled programmers customize their environment extensively. A
course in which students learn these skills would better prepare them for entry into the
work field as well as for graduate school.
These tools would be available as open source code and the course would utilize a linux
(Red Hat distribution) platform. Many of the more advanced students are adept at
utilizing the web and would be able to install the necessary operating system and related
tools on their own machine at home for minimal cost. Installation of a second hard drive,
approximately comparable in cost to a textbook, would comprise the bulk of such
expense, if it were required. It is important, with the limited time available in the labs at
Manhattan, that we plan our courses with the need for students to be able to work on their
computers at home.
[Note: Jake will be installing linux on a dual boot basis on a limited number of machines
(RLC 103/104) for the OS course for Spring 2003.]
Such tools would include:



Installation and configuration of linux: the RLC 201 minilab
Each student (or pair of students will install on one of the machines in the
minilab)
Editors/customizing editors: Emacs as a development tool: using the shell,
customization (elisp), email, newsgroups, etc.
A control versioning system such as CVS, RVS. Project management for
Manhattan College/ Math & Computer Science: Course Proposal - Software Development Page 1 of 3.
1 week
2 wks
producing software in groups. The students would work together on one or
more projects using CVS.
 Debugging tools, GDB for C/C++ and Java






1 wk
1 wk
Building and installing downloaded software on linux (and on MS platforms ghostview/ghostscript) - simple examples of complicated compilations
(configure/make/make install). rpms - how to install/build them
1 wk
UML and the Rational Unified Process.
How to organize and maintain a functioning and effective development
scheme.
2 wks
Testing: how to develop and maintain software correctness during the
development phase using regression testing. Practical application.
1 wk
Profiling, tuning and presenting (Power point/javascript) the class project
1 wk
(Optional )Apache - setting up a secure server on using the linux operating system
2 wks
Total
12 wks
Prerequisites:
CMPT 353: Systems Programming with Unix
Recommended:
CMPT 312: OS
CMPT 334: Architecture
CMPT 341: PL (scheme) or CMPT 420: AI (lisp)
Computing on the Web
Textbooks:
On-line manuals:
elisp (emacs) : http://www.glug.org/people/ttn/software/elisp-tutorial/
www.gnu.org/
emacs
gdb
CVS: http://www.loria.fr/~molli/cvs/doc/cvs_toc.html
Apache: http://httpd.apache.org/docs/
Reference: (optional)
O’Reilly books:
Learning GNU Emacs,
Programming with GNU Software,
Managing Projects with Make
Description of terms:
Manhattan College/ Math & Computer Science: Course Proposal - Software Development Page 2 of 3.
Emacs (/Xemacs ) : A popular and powerful editor/development tool which is
customizable for productivity. A developer can run the shell within emacs, access email
and access newsgroups, etc
CVS: Control versioning system: Keeps track of “checked in” versions of software
being developed by a team. Every version is kept, and available. Changes to the code by
different people and merged automatically unless there is a conflict, which must be
resolved manually.
GDB: A standard debugger, which can be attached to a running program, allowing the
user to follow all function calls, skipping over or going into the execution of a function
call. The value of variables are available, etc. It does not work on MACROS.
RPMs: prepackaged software that can be installed with out building from scratch
Uses Red Hat package management.
configure/make/make install: the standard build process, which often needs tweaking to
work. Allows the used to build software for the platform she is working on.
UML: modern development tool used to describe software specifications
Regression testing: when changes are made to a program, regression testing is used to
check that nothing was broken by the changes.
setting up tests and automated regression testing in the CVS environment
Apache: linux program used to set up a server
© Carol M. Hurwitz
Manhattan College/ Math & Computer Science: Course Proposal - Software Development Page 3 of 3.
Download