Department of Electrical Engineering and Computer Science. United States ... accredited program. ... To accomplish these long-term objectives, the programs.
Developing an Undergraduate Distributed Applications Course for Multiple Target Populations Michael J. Lanham, John M.D. Hill, Charles E. Phillips , Jean R. S. Blair Department of Electrical Engineering and Computer Science United States Military Academy, West Point, New York 10996 { Michael.Lanham | John.Hill | Charles.Phillips | Jean.Blair } @usma.edu ABSTRACT This paper describes an undergraduate Distributed Application Engineering course whose design serves several curricula and missions at the United States Military Academy. The course’s primary goals for students are to understand the components of distributed applications and to practice the design, construction, testing, and deployment of a distributed application. The course also has a networking block of instruction to increase students’ knowledge of how to design, build and maintain the infrastructure to support their applications. This paper discusses how and why this course developed within our overall curriculum, the goals and objectives of the course, and how the course achieves those goals and objectives. We also present some lessons learned in the previous and most recent iterations of the course. Finally we offer some ideas of enhancements and modifications to the implementation and the design of the course to remain relevant to the department. IS450 – Principles of Distributed Application Engineering – helps satisfy the Army’s and the Academy’s needs for technically competent leaders and officers. The lessons learned are equally applicable to civilian schools where students who are non-Computer Science majors take these kinds of classes. Index Terms—capstone course, web development, distributed application development, web-based application development
1.
BACKGROUND AND MOTIVATION
Introduction The United States Military Academy (USMA) at West Point, New York is the oldest engineering school in the United States. It is a medium sized under-graduate institution with 4,000 students (cadets). Through most of its 200 year history, the Academy has required a set of courses that compose the “core” of each student’s academic schedule. The Academy core contains elements common to most undergraduate institutions. It also contains material unique to its fundamental mission of “educating and training leaders of character dedicated to a lifetime of selfless service to the nation” [1]. All students take courses in leadership, military history, and tactics, and must meet a mandatory engineering science requirement. The combination of academic and military courses allows cadets to achieve one overarching Academy goal of being able to “anticipate and respond effectively to the uncertainties of a changing technological, social, political, and economic world.” [2]
Academic Goals Ten Academic Program Goals support the Academy’s overarching goal. This paper addresses two of these goals: the Information Technology Goal and the Engineering and Technology Goal. Engineering and Technology Goal. The Engineering and Technology Goal states “graduates apply mathematics, science, technology, and the engineering design process to devise technological problem solutions that are effective and adaptable.” [3] To meet this goal, cadets complete either a three course engineering sequence (3CES) or complete the requirements of a Bachelor of Science degree in an ABET accredited program. Seven engineering programs [4] offer sequences that cover their discipline’s material in depth rather than in breadth. Each program designs their 3CES to include a thorough use of the engineering design process, a progression from design to implementation, and a culminating design project. Information Technology (IT) Goal. The Information Technology Goal states “graduates understand and apply information technology concepts to acquire, manage, communicate and defend information, solve problems, and adapt to technological change.”[5] Students primarily meet this goal by taking a freshman-level IT course and a junior-level IT course. Students in engineering programs that satisfy the IT requirement do not take the junior-level course. Objectives To facilitate meeting the Dean’s academic goals, each program creates objectives that describe what students should know and be able to do at five to seven years after graduation. Two of the objectives of the Computer Science (CS) program that are relevant to the development of an undergraduate distributed applications course are: q
Apply disciplinary knowledge and skills to develop and implement solutions to applied problems individually and in diverse teams
q
Design, build, and test successful solutions to computer science and computer information systems problems.
To accomplish these long-term objectives, the programs use short-term outcomes to describe what students can do prior to and immediately upon graduation. Outcomes The Computer Science and Information Systems Engineering (ISE) programs each have 12 outcomes [6]. These
outcomes primarily apply to the programs’ majors. To a lesser extent, in breadth and depth, they also apply to students who enroll in the CS 3CES (see Table 1). The students cover software design, use progressively more complex and demanding standards, engage in team work, use emerging technologies, use technology in applied settings, and demonstrate communications skills. Table 1: CS Three-Course Sequence Course CS300 CS350
Title Computer Science Fundamentals DB Design and Implementation
Semester Fall, Junior Year Spring, Junior Year
IS450 --or— CS394
Principles of Distributed Application Engineering Distributed Application Engineering
Fall, Senior Year
academic and personal backgrounds; and students must build and secure their own development environments. IS450 is ideal for students who are interested in learning about and applying basic concepts in a hands-on fashion. It exposes students to a breadth of topics including programming languages, object oriented programming, networking, information assurance, software engineering, project management, and personnel management concepts. More importantly, IS450 requires that students show proficiency through implementation. Students that take this course gain technical knowledge that will allow them to be productive as part of any design, implementation, or maintenance team. They will also practice the skills the Army and the Academy have determined are fundamental to being good officers: time, people, and project/mission management.
Spring, Senior Year
2.
The Distributed Applications Engineering Course The ISE major uses this course as an integral part of its graduation requirements. For the CS program, the course is a technical elective.. As the third and last course in the 3CES, the name follows the academy’s 3CES convention by using 450 as the course number—giving us the IS450 nomenclature. The CS program supports the course with the CS394 nomenclature during the spring semesters. The goals of the course are to give students a solid understanding of the components of a distributed application and to practice the design, construction, testing, and deployment of a distributed application. Distributed applications can range from fairly simplistic two-tier architectures (client and server) to more complex n-tier architectures (client, =1 application servers, = 1 data stores/databases). There are many different ways to implement distributed applications and their message passing (COM, XML, SOAP, proprietary, etc.). IS450 currently uses web-based distributed applications as the vehicle to discuss the components of the application on clients and servers, the message passing protocols, the storage and manipulation of data, and the infrastructures that support web-based applications. Leading up to IS450, CS 3CES students take CS300. The USMA course catalog states, “This course presents a thoughtprovoking introduction to the key concepts…Cadets develop their understanding of programming (to include modular design) and problem-solving skills begun in IT 105, [then]… focus on software, data organization, and other topics.” Additionally, the USMA catalog describes CS350’s scope as addressing “the analysis, design and implementation of relational database applications. Key concepts include analysis and design using a standardized notation such as the unified modeling language (UML), data model to logical schema conversion techniques, normalization, transaction processing, and client-server architectures.” The course is distinctive for several reasons: first and foremost the course culminates when students conduct usability, vulnerability and penetration tests against their own and each others’ applications. IS450 is also an integrative experience for non-CS majors; it incorporates multiple generations of student teams for each project; students have a broad variety of
RELATED WORK
Data storage, data warehousing, data management, and data retrieval requirements continue to grow in industry, government, and the military. Given the above, it is not surprising that courses in web design, networks, software engineering and databases are common across most CS curricula. Integrating material from all of these fields into a single course is less common. Comparing information about such courses in The World Lecture Hall listings from two years ago [7] to the present day [8] suggests that other courses are less ambitious in their breadth of coverage. Courses that are similar to IS450 tend to focus on particular tool sets (implementation technologies such as XML, XSL, JDBC, JSP, and similar techniques) rather than the broader task of how to design and build distributed applications [9, 10]. Courses that pursue greater depth of material tend to be graduate level courses [11], continuing education courses [12], or utilize languages and techniques [13] that are not appropriate for the IS450 audiences. The initial design of IS450 [7], though developed independently, had some similarities to work by Yang and Grove. [14] There were, however notable differences, in particular the fact that non-CS majors take the course as their CS capstone design project experience. Additionally, IS450 uses a single server side technology instead of two or more, ensuring more time for understanding at the expense of exposure to competing technologies.
3.
COURSE DESIGN
Moving a course from concept to execution is a nontrivial task with many competing interests and constituencies. Preceding the creation of IS450, vigorous debates occurred over many interrelated issues. [7] Typical issues included: What should the course cover and how fast should it cover it? How deep into internals of protocols and networking should the course go? What areas of overlap with other courses should remain and which should go? How should other courses evolve when co-existing with IS450? Not least of all was what students would take the course, when in their educational career would they take it, and what did the institution expect of them when they finished the course?
Target Populations CS482 – Information Assurance
The IS450 course currently serves four distinct target populations. One of the consequences of supporting such a disparate group is that the department offers the course in both the fall and spring semesters. q
q
IT105 – Intro to IT
Computer Science Three-Course Engineering Sequence (CS3CES): As the capstone course for West Point’s CS three-course engineering sequence, it serves a primary audience of students who have chosen not to major in an engineering discipline. Electronic and Information Technology Systems (EITS) Major: For those students who choose to earn their degree in the newly established EITS major, this course serves as an optional component of their overall program. For these students the course is one of several projects-based courses.
q
Information Systems Engineering (ISE) Major: The ISE major requires this course as a part of its foundation.
q
Computer Science (CS) Major: West Point’s traditional ABET-accredited CS program offers the course as an elective that provides a heavy dose of hands-on work.
IS450 Objectives The first step in meeting the applicable CS and ISE outcomes was to establish course objectives (see ). The objectives are broad in scope and tailored for students with only a two-course background in computer science. Table 2: IS450 Course Objectives Objective 1
2 3 4
Description Learn how to design, build, and test usable and maintainable web sites and web-based client-side applications. Learn how to design, build, and test practical and maintainable web-based server-side applications. Learn both theoretical and practical fundamentals of modern computing networks and networking. Learn how to do the first three tasks within guidelines, regulations, and policies of the Department of Defense and the Department of the Army.
Topics As the capstone for the CS 3CES in the USMA curriculum, IS450 must meet defined criteria [3]. The major goal for integrating these criteria into IS450 is to do so in such a way that the students do not perceive the course as just another item on the checklist for graduation. To accomplish this integration and provide an overall structure for the course, the IS450 syllabus includes major topics that tie material together from the two core IT courses, the other two courses in the CS 3CES (see Table 1). Table 3Error! Reference source not found. shows the major topics for the course IS450 builds upon knowledge gained by the students in previous courses. Figure 1 shows the combination of topics from CS courses and the continuing emphasis on problem solving skills.
CS484 – Networking
IS 450 Distrib Apps Problem Solving
CS300 – CS Fundamentals
CS350 – Database Design
Figure 1: IS450 Topic Integration Figure 1 also shows majors and non-majors alike that the course incorporates some, but certainly not all, material from CS484 Networks and CS482 Information Assurance. The partial coverage serves as a stepping stone for CS and EITS majors to reach more advanced courses while providing enough material to satisfy the CS Program outcomes [6]. Table 3 Course Topics and Lesson Schedule Topics Intro Development tools (Unix, cvs) Zend Studio XHTML vs. HTML XHTML & CSS Validation XHTML Forms Review Project Design / Management UML, use case, waterfall, top-down refinement UI design, objects, inheritance Server Install and Technology (on student machines) Apache with PHP MySQL MySQL control center Zend Studio Server (Remote Debugger) dB Design and Build UML Model / Object Refresher 1st NF – 3rd BCNF Normalization Review Intro to 4th and 5th NF and reasons / rational Denormalization reasons / rational Transactions, ACID, serializability MySQL intro (CLU and GUI) Server-Side Processing Functions and Classes (OO Based vs. OOP) Regular Expressions and Arrays State w/sessions vs. cookies Existing Code Modules (phpgacl, ADODB, SMARTY) Graphics (charts, graphics, images) Client-Side Processing Content vs. Presentation (CSS) DOM, DHTML Layers, Browser Interoperability Department of Defense Accessibility Guidelines Information Assurance & Policies IA Model and Threats review Web App Vulnerabilities Army Regulation 25-2 Information Assurance RCERT and NSA Server Lockdown Techniques Present Projects to class Networks Terminology Review Design (logical and physical) Build and Configure Internals of TCP, DNS, and IP Addressing Application Portability and Penetration Testing Term End Exam / Final Exam Review
4.
Lessons 1
Lesson Count 1
2-4
3
5-6
2
7-9
3
10-16
7
17-23
7
24-25
2
26-28 29-33
3 5
34-39 40
6 1
TECHNIQUES AND PROCEDURES
The course takes advantage of several interesting techniques that, in addition to its integrative nature, makes it distinct from traditional web-design, database, and networking courses. Multi-Semester Projects. Instructors ensure projects are complex enough that student teams require multiple semesters
(and multiple generations of student teams) to complete. This requires students to read, understand, and extend problem requirements from previous student teams. This course design choice allows natural reinforcement of software engineering concepts, project management, project lifecycle, good documentation and good implementation habits. Additionally, the projects require well written deliverables, versioning control of source code, and versioning of documentation products to facilitate implementation of a multi-semester product life-cycle. Widely-Varying Backgrounds. Students who choose non-engineering majors at many undergraduate institutions do not usually have to expose themselves to engineering-based project courses. In IS450, students with primary majors in, for example, foreign languages may be working with biology majors and philosophy majors. A consequence of the students bringing unique perspectives to projects (in comparison to straight CS students), is that students must learn to work with, delegate to, and achieve success with peers of unequal skills, motivations, and levels of technical ability. These growth opportunities also prepare the students for the much more intense, broader-scoped, and complex projects their majors require them to execute. Problem Solving and Project Analysis. Another effect of the multi-semester projects is that students must exercise communication, negotiation, and analysis skills. Those skills allow them to build a list of deliverables that is feasible, achievable, and satisfactory to their clients for the semester that they are enrolled. In addition, the students (and to a lesser degree the clients) learn to separate the must-do tasks of their projects from the nice-to-do tasks. In the process of developing and delivering a product to their clients, students develop and refine their communication skills. Personal Development Environment. Students do all development work on their own computers in development environments they must setup. These are not simply editors and compilers as they would use in a traditional CS course. Instead, each student must set up and secure a personal web server, PHP engine, database server, versioning clients, 3rd party PHP libraries, remote debugging software, an integrated development environment, and local debugging software. The students must place their implemented deliverables onto production servers and environments only when they are ready to publish their application. This restriction mimics industry and Army preferences for not allowing untested software in critical environments, and addresses the course objective of designing and managing networks.
with their vocabulary and theoretical exploration of networks. The exercise focuses on the competitive testing and possible compromise of other student projects. Students build the testing environment by constructing an si olated network, installing appropriate services, and porting student projects. Conducting penetration testing and deliberately trying another’s application is a rare opportunity for students in most academic settings, though it can be found in some cyber capture the flag [18] and cyber defense exercises[19]. Experiences in cyber-defense exercises [19] get students really excited about these kinds of opportunities and transform the occasion into a great learning experience.
5.
EVALUATION AND GRADING
IS450 is a projects course, with a healthy mix of theory followed by intense hands-on solving of realistic problems. The course grading scheme is shown in Table 4. Table 4: IS450 Graded Events Graded Event
Explanation
Points
Phase I: Design Phase II: Build DB Phase III: Server Side Processing
Initial client consultation, Use-Case, Object, and DB designs Construct database to support design, evolutionary design changes Build server side scripting functionality and rudimentary XHTML GUI with evolutionary design changes Build client side scripting, CSS, DHTML, XHTML with evolutionary design changes Present Project to Class
200
Hrs per team 10
150
5
500
50
400
40
100
4
Design a network for an Army unit in a peace-time garrison environment Inherit a design of a small network for a war-time deployed Army unit, adjust to fit available hardware, provide essential services Given a network and hardware, install applications onto this new environment. Conduct penetration testing and defense of the network and application A 3.5 hour comprehensive exam
150
6
100
4
100
4
200
n/a
Phase IV: Client Side Processing Phase V: Project Presentation Network Design Network Construction Penetration Testing & App Portability Term Exam
End
Enforcement of Relevant Standards. Before beginning design and implementation of their own user interfaces, teams review existing web sites and applications and provide critiques of what they saw using a common set of principles [15]. IS450 requires the user interface to be strictly compliant with the World Wide Web Consortium’s (w3c) standards [16]. Teams certify their static and dynamic pages are w3c compliant by using the w3c validators [17]. Another way that students attain cross-platform usefulness for their application is through the use of Cascading Style Sheets (CSS) to control the presentation of their data on client machines.
It is worth noting that Table 4includes an estimate of the number of hours required for a two-person team to accomplish each task. The approximate number of hours-per-project is consistent with the Academy’s guidance for total course hours: 40 contact hours in the classroom and 80 hours for class preparation and project work. With 115 hours split between two partners, the average expected project time per student is about 55-60 hours. That leaves approximately 30-45 minutes prepatory time per class period.
Usability and Penetration Testing. IS450 concludes with a challenging and fun practical exercise of usability penetration testing. The exercise is the culminating event for the course and tightly binds the development of their applications
The department has offered the course for three semesters with small populations each term. In the fall of 2004, 68 students will populate four sections. They will have access to
6.
RESULTS AND LESSONS LEARNED
projects started by previous student teams and will help shape the up-scaling of this course for future iterations and students. Multi-Semester Projects Multi-semester projects help students accomplish course objectives one and two. The ability to write maintainable code is a common industry (Army and civilian) expectation that CS programs try to enforce. Reaching this goal requires significant oversight by the instructor, as students resist writing implementations that lend themselves to extension and maintenance. Additionally, students usually have limited understanding of their problem domains, making it difficult for them to accurately gauge the level of work required. They often over-estimate their capabilities and underestimated the resources they need (especially time). Widely varying Backgrounds M any colleges structure their classes to fit particular audiences: physics for non-engineers, business/consumer math, and engineering gateway courses all have a target audience that has some major commonalities. At the USMA, students from all non-engineering majors take the CS 3CES. Students have different motivations for taking IS450 — some students have other priorities, other desires, conflicting demands, and some imply do not enjoy the idea of creating a distributed application despite their enrolling in the CS 3CES. These students are not only a challenge to the instructor, they are a challenge to their fellow students. To help overcome that challenge, the course uses formal peer evaluations that can lead to grade differentials among team members. Diverse student backgrounds have provided for interesting approaches to problem solving that are normally not seen in classes of CS majors. The students in IS450 usually do not have the rigid logic and problem solving skills that CS students develop. As such, they sometimes see problems from perspectives CS instructors have not considered, and occasionally develop very clever ways of accomplishing tasks. This phenomenon is most apparent in the development of the Human Computer Interface. CS programmers are sometimes not particularly adept at creating robust and visually appealing HCI layers. The students who take IS450 as part of their CS 3CES have routinely generated appealing interfaces even if the underlying infrastructure is not elegant, efficient, or maintainable. Problem Solving and Project Analysis In teaching the students how to use different tools to more efficiently organize their designs, plans, time management, and product development, several issues have become apparent. The first observation is that software engineering must be part of every project course. The Academic Goals [3] specifically mandate that students develop the ability to design solutions to complex problems. Some research has shown that many professionals in the CS and IT fields feel they did not receive adequate instruction on software engineering techniques and project management (“I wish I had been taught…”). [20] Most importantly, this observation applies to every tier of the applications the students design and to the project as a whole. The department makes Unified Modeling Language (UML) a standard design tool. The repetition of UML from
CS300 Fundamentals to CS350 Databases and IS450 allows students to use the tool as an enabling device. Use-Case diagrams, scenarios, and class diagrams now follow standard notational conventions without draconian corrective measures by the instructors. Students will undoubtedly learn even more software project management lessons as they start to inherit projects in varying degrees of completion with varying degrees of adequate documentation. Students have learned the value of immediately planning the allocation of personnel, time, and resources to their project. As expected, initial timelines, team-internal deadlines, discovery of additional requirements, and adjustments to deliverables occurred for every team in each of the past semesters. Students had a moderately difficult time understanding the usefulness of n-tier architectures when applied beyond the idea of physical servers (a database server and a web server). The course introduces students to the Model-View-Controller (MVC) framework for facilitating code reuse and project design. [21] The USMA curriculum does not yet formally introduce OO patterns to our students and IS450 is no exception (remember the audience is non-CS Majors). IS450 does however use the same verbiage as other CS projects courses that essentially follow the MVC framework (see Figure 2). The students in this iteration of the course initially balked at utilizing the MVC framework. It was only after receiving dramatically altered user-interface expectations from some clients, that teams wished they had followed the course expectations.
Figure 2: MVC Application Layers It was also during one of those dreaded total re-write moments when another team discovered they should implement parallel development of their application layers. Students in different teams remarked how it was surprisingly easy to do development in parallel, not having to wait for one team member to finish an entire phase of the project before starting a new phase. The teams involved in this semester each had total rewrites happen at least once. Reasons for the rewrites ranged student stubbornness to students developing a better understanding of their problem domain as the semester progressed. A lesson absorbed during previous executions of the course was the sequencing of the material. In several courses [8-12], the tendency is to start instruction about distributed applications with discussions of the Human Computer Interface (HCI). These courses go straight into learning XHTML, CSS, and discuss separating presentation from content. In IS450, the assumption is that students better understand the development of a user interface and an application layer after defining their
problem domain and determining what data their application needs to store, and just as critically, what data the application needs to process and present as information. Two additional lessons deserve illustration as part of the problem analysis and problem solving skills the students gain exposure to and must utilize. The first is the inclusion of Role Based Access Control (RBAC). [22] The incorporation of RBAC during the planning and design stages is a critical component of a distributed application that designers should not ignore. The students immediately saw the usefulness of RBAC, and in particular the PHP library called PHPgacl [23]. Unfortunately, many students were overwhelmed by its perceived complexity. Follow-on classes will incorporate better examples of how to incorporate PHPgacl into a code base rather than leave the students to glean the information from the manual. The last lesson involving problem solving skills is the use of a database abstraction layer between the application and the database. Open Database Connectivity (ODBC) is such an abstraction, though there are inherit limitations to using it. Instead, IS450 recommends students utilize ADODB [24] for its additional power, flexibility, and speed compared to ODBC. Again, students were intimidated by the perceived complexity of this library and were unable to look at it as a “black box.” Like PHPgacl, follow-on versions of the course must include better examples of integrating ADODB into a student’s project.
that as teams inherit unacceptable designs (must be totally rewritten, do not pass minimal usability standards, have incoherent structure) students will modify their opinions on the usefulness of following established guidelines when creating applications. It is also likely that students will receive the message clearly when they see products that clients refused to accept because of unusable interfaces. The usefulness of peer critiques of user interfaces has so far been of limited value. In the same manner as peer evaluations, students are having difficulties holding peers to known standards.
7.
Thus far, only a few CS majors and sequencers have taken IS450. Even with only a small population of students having taken the course, some conclusions are already clear. q
This is a demanding hands-on projects course: Student feedback has consistently stated that they should work harder and start earlier.
q
Reading about topics and concepts rarely produces true understanding but using those concepts usually does: CS is a prime example of the “you can’t learn to ride a bike by reading about it” learning philosophy. Convincing students of this truth helps them avoid self-inflicted pain as the semester progresses.
q
The use of a mid-term is counter productive: It detracts from willingness to commit time to projects. It also detracts from the ability to appropriately weight assignments that take large amounts of time with the appropriate course credit.
q
Coming to class with informed questions makes for more effective use of class time: Consuming class time answering semi-informed questions works better than formal lecturing when trying to get students engaged.
q
Students find it a challenge to focus on what other people consider key and essential tasks within their projects: They have also had trouble identifying key and essential tasks while ensuring those tasks are feasible and achievable within the given constraints.
q
Students have had some minimal exposure to large projects and long project lifetimes: Students are now aware that applications’ layers encapsulate behaviors, thereby simplifying planning, development, and maintenance.
q
Building security into applications early means much better protection than when security is an afterthought: Students learned that building security into every layer of distributed applications ensures much better protection against malicious users and attackers than simply trying to wish it away.
Personal Development Environment Students installed Apache, PHP, and MySQL on their own personal computers. Along with basic installation, they had to follow security guidelines to decrease the threat of having malicious users attack the services on their computers. Additionally, students learned how to setup Concurrent Versioning Systems (CVS) repositories to smooth the progress of team members writing their application’s source code. Finally, they installed the Zend Studio Integrated Development Environment (IDE). In addition to a discussion of the technologies they installed, students received the first integrated information assurance material in the form of checklists to secure their servers. They also learned about the relative dangers inherent with running services on their machines on a Department of Defense (DOD) network. The feedback from the most recent iterations of the course has been mixed. Reactions have ranged from loathing the time it took to execute/troubleshoot to surprise at being allowed to run services on their personal computers while attached to a government network. Too little data exists to determine if that reaction if worth the sense of confidence gained by students who do not have undue troubles installing the software. This component of the course will remain, though the course may find or create a pre-bundled Apache, PHP, MySQL package that will require little to no intimate knowledge of setting up the services. Penetration and Usability Testing Students remained unconvinced of the usefulness and necessity of standards, much less the need to follow them. They were surprised to learn of the legal and regulatory requirements that DOD and the federal government place on federallyemployed application authors and even more surprised to learn that as leaders they will have to enforce those rules. It is likely
CONCLUSIONS AND FUTURE WORK
Refinement of the pace of the course, culling material that students mastered in previous courses, and changing the implementation technologies are all areas of exploration for future versions of the course. In particular, especially for CS majors, there has already been discussion about using the purely OOP capabilities of JSP and Java Struts in the CS394 incarnation of the course. An additional change could include further removing the application layer from the presentation
layer. XML is the technology that most readily comes to mind when discussing data interchange between application layers The fourth iteration of IS450 continues to show areas needing improvement but has coalesced well enough to absorb a large influx of students. Future versions of this course may reveal the need for significant overhaul or simply minor tweaks to content, presentation, and sequencing. Overall, IS450 is ontrack to meeting the requirements of the CS three-coursesequence, the needs of the CS Majors, EITS Majors, and the ISE majors. Finally, IS450 is on track to train future officers how to plan, develop, and build long-term projects that they inherit from others and pass on to still others when they enter the Army.
8.
REFERENCES
“http://www.microsoft.com/traincert/syllabi/1298BFinal.asp .” Accessed on 2 May 2004. 14
Yang, T. Andrew; Grove, Ralph. “A Web-Based Application Development Course for the Computing Curricula 2001/NC3 Track,” 2002 International World Wide Web Conference, May 2002, at “http://www2002.org/CDROM/alternate/13/.” Accessed on 6 May 2004.
[15] Wixom, Haley and Dennis. “Systems Analysis and Design, 2nd Edition.” Wiley and Sons, 2003. [16] XHTML Tutorial at “http://www.w3schools.com/xhtml/default.asp .” Accessed on 10 February 2004. [17] W3C Validation Service at “http://validator.w3.org/ .” Accessed on 10 February 2004.
[1]
“USMA Mission,” at “http://www.usma.edu/mission.asp .” Accessed on 25 January 2004.
[18] Vigna, Giovanni. “ Capture the Flag," at “http://www.cs.ucsb.edu/~vigna/CTF.” Accessed on 4 May 2004.
[2]
“Educating Future Army Officers for a Changing World,” at “http://www.dean.usma.edu/support/aad/efaocw.pdf.” Page 17. Accessed on 22 April 2004.
[3 ]
Ibid, page 27.
[19 ] Schepens, W.J.; James, J. “Architecture of a Cyber Defense Competition,” 2003 IEEE International Confernece on Systems, Man and Cybernetics, Oct 5-8, 2003. At “http://www.itoc.usma.edu/CDX/pubs/Architecture%20of%20a %20Cyber%20Defense%20Competition_SMCC03.pdf.” Accessed on 4 May 2004.
[4]
“2006 Engineering Sequence Curriculum,” at “http://amsext.usma.edu/public/curriccat/curric_engr_seq.cfm?int_grad_yr= 2006.” Accessed on 25 January 2004.
[20] Lethbridge, Timothy C. “What Knowledge is Important to a Software Professional?” IEEE Computer, May 2000, pp. 44-50.
[5 ]
“Educating Future Army Officers for a Changing World,” at “http://www.dean.usma.edu/support/aad/efaocw.pdf.” Page 32. Accessed on 22 April 2004.
[21] Gamma, Erich; Helm, Richard; Johnson, Ralph; Vlissides, John. “Design Patterns – Elements of Reusable Object-Oriented Software.” Addison-Wesley, Reading, MA, 1995
[6]
“Computer Science Program Outcomes,” at http://www.eecs.usma.edu/programs/cs/outcomes.htm Accessed on 28 April 2004.
[22] Ferraiolo, David; Sandhu, Ravi; Gavrila, Serban; et all. “Proposed NIST Standard for Role-Based Access Control” at “http://csrc.nist.gov/rbac/rbacSTD-ACM.pdf.” Accessed on 8 February 2004.
[7]
Conti, Gregory J., Hill, John M.D., and Carver, Curtis A. Jr. “Developing an Undergraduate Distributed Development Course,” Proceedings of the 32nd ASEE/IEEE Frontiers in Education Conference, November 6-9, 2002, Boston, MA, at http://fie.engrng.pitt.edu/fie2002/papers/1072.pdf. Accessed on 24 April 2004.
[8]
World Lecture Hall, at “http://wnt.cc.utexas.edu/~wlh/index.cfm” Accessed on 22 February 2004.
[9]
Gangolly, Jagdish S. “Acc 683. Topics in Accounting Information Systems, Web Application Development for Electronic Commerce,” at “http://www.albany.edu/acc/courses/acc683.spring00.html.” Accessed on 5 February 2004.
[10 ] McIntosh, R.D. Dr. “Using XHTML and XML in Web Publishing,” at “ http://onlinebcit.ca/de/multimed.htm .” Accessed on 3 February 2004. [11] Maxim, Bruce. “CS525 Multimedia Design,” at “http://www.engin.umd.umich.edu/CIS/course.des/cis525.html.” Accessed on 3 February 2004. [12] University of Maryland University College, “CMIS 445: Distributed Systems,” at “http://www.umuc.edu/prog/ugp/ugpdist/samplesyllabi/cmis_445 .html.” Accessed on 14 April 2004. [13] “Mastering Distributed Application Design and Development Using Microsoft Visual Studio 6.0,” at
[23] Benoit, Michael. “PHP Generic Access Control List” at “http://phpgacl.sourceforge.net/.” Accessed on 8 February 2004. [24] Lim, John. “Active Data Objects” “http://phplens.com/lens/adodb/docs-adodb.htm#install.” Accessed on 9 February 2004.
at