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.