A Hands-On Overview Course for Computer

1 downloads 0 Views 389KB Size Report
to introduce the fundamental computer science concepts, .... in a junior operating system course, database programming ... provides practical overview for advanced data structures. (vector ..... [4] Tao, L, “Introduction to Server-Based Computing”, book draft used ... http://www.vtex.lt/informatics_in_education/pdf/INFE097.pdf.
Session T3B

A Hands-On Overview Course for Computer Science and Modern Information Technologies Lixin Tao, and

Li-Chiou Chen

Pace University, [email protected], [email protected] and their implementations, the server IT infrastructure, and the expertise for maintaining the server resources. The clients of such services are typically software systems that can consume the services with remote system integration. Credit card processing is a typical Internet business service provided by major financial institutions. New Internet business services are typically implemented by integrating existing services, and the XML technologies are the foundation of data integration across heterogeneous IT systems. Internet business services promote specialized and collaborated computing as well as support competitive global economy. Web service is a particular implementation technology of Internet business services, and serviceoriented architecture (SOA) specifies the software architecture based on service integration. The serviceoriented computing is based on networking, the client-server and thin-client architectures, and the Web architecture which Index Terms - Computing program overview course, Project- is still the foundation of the fast-growing e-commerce and ebased education, Server-based computing, Shortening course society. As the top-level abstraction, each Internet business prerequisite chains. service is implemented with server-side software component technologies like EJB [22] and .NET [24]. A software INTRODUCTION component is a software module that has well-defined The enrollment of the USA undergraduate computer science interfaces and can be individually deployed. A software programs has dropped significantly in the recent years. As component typically implements specific business logics reported by CRA (Computer Research Association) [6][2], with multiple objects, and the common server infrastructure the number of newly declared computer science (CS) majors functions, like component life cycle management, thread declined 33% from fall 2002 to fall 2004. Minority students pooling and synchronization, data caching, load balancing continue to be underrepresented, e.g., only 3.1% of CS and distributed transactions, are factored out into a Bachelor degree recipients are African-American students component container which is basically a software [6][2]. Apart from the burst of the dot-com-bubble and the framework interacting with the components through preIT out-sourcing, there are two major reasons that have declared hook and slot methods. Since early 1990s the attributed to the decline of computer science enrollment: (1) software component based software engineering has become the lag between the knowledge scope of our current the mainstream IT industry practice. In 1995 The computer science curricula and the expectations of the IT Department of Defense mandated that all its projects must be based on software components. industry; (2) the current waterfall teaching model. Based on the above discussion we can see that over the last two decades the concepts of abstraction and divide-andconquer have been recursively applied to higher-level I. Knowledge Lag Problem software modules/systems, from objects to software components and to Internet business services; the knowledge Since early 2000s the IT industry has adopted the service- base for server-based computing is a superset of that for oriented computing model. As a generalization of the Web client-side computing and introduces many new challenges and distributed computing technologies, Internet business not properly covered by the current curricula; and the services [23] (for which Web service is one of the particular dominant server-based computing IT technologies are based implementation techniques) are provided on servers through on sound and recurring concepts and methodologies that the Internet for heterogeneous client systems to consume. An must be integrated in computer science curricula to prepare Internet business service abstracts specific business logics students for the current and future IT challenges. 978-1-4244-1970-8/08/$25.00 ©2008 IEEE October 22 – 25, 2008, Saratoga Springs, NY 38th ASEE/IEEE Frontiers in Education Conference T3B-12 Abstract - This paper describes the logics and experience in piloting a new project-based program overview course to introduce the fundamental computer science concepts, methodologies and technologies underpinning the latest information technologies for students who have just completed CS2 or the equivalent. The course focuses on recurring great computing ideas, motivates computing students with the modern real-world challenges and their innovative solution technologies based on creative application of the great ideas, and shortens the prerequisite chains for subsequent computing courses to support more current and flexible computing curricula. The assessment data indicate that students who have taken this program overview course are better motivated and prepared for follow-up courses and real-world IT challenges.

Session T3B But many of our computer science programs are still struggling with effective teaching of objects and have weak coverage of server-side computing. Most of the concepts and methodologies mentioned above are either only covered in elective senior courses, or weakly covered, or totally missing in the current curricula. Our students need early introduction of the fundamental modern computing concepts so they can have a clear roadmap and motivation for their programs and be well-prepared for the competitive global job market. ACM Computing Curricula 2001 correctly introduced the net-centric knowledge area to address the above knowledge gap, but most computer science programs have not properly integrated it into the curricula due to limitations of faculty expertise and resources. II. Waterfall Teaching Problem Most of the computer science curricula today are still based on ACM Computing Curricula 1991 that reflected the IT technologies at that age, with limited coverage on serverbased computing. The topics are covered in their waterfall order specified by the existing prerequisite chains. Even though the fundamental concepts in these curricula are still the foundation of today’s technologies, many important concepts and skills are scattered in many senior courses which cannot be taken earlier due to the strict course prerequisite requirements. For example, a typical engaging programming project today involves graphic user interfaces, database and networking. To make user interface responsive, multi-threads are needed. But most of the current curricula introduce networking programming and database programming in senior courses, and introduce multithreading in an operating system course in the 6th semester. As a result the instructors are limited in what kind of projects they can use to engage the students, and the students have limited opportunities in practicing the important skills. To resolve this problem we need to switch away from the current waterfall teaching model and greatly shorten the current deep course prerequisite chains. We advocate an in-depth lab-based computer science program overview in the junior year with emphasis on the fundamental and recurring concepts and skills underpinning the modern computing technologies. Such hands-on program review can be in the form of a new “Introduction to ServerBased Computing” course for students who have completed CS1 and CS2, or be integrated into the relevant existing courses as complement course components reflecting the latest technology trends. Such a computing overview course can also be adopted by Information Systems programs and Information Technology programs since students in these programs also need to understand the latest computing concepts and technologies to address the business problems, or deploy and maintain business solutions on servers.

RELATED WORK Most computer science programs introduces multi-threading in a junior operating system course, database programming in an elective senior database course, event-driven programming in an elective course on graphic user interfaces, and networking programming in a senior networking course. In response to ACM Computing Curricula 2001, many computer science programs have introduced Web development courses. But these courses focus on developing Web sites instead of the fundamental concepts and methodologies behind the tiered Web software architecture. For example few of these courses address the server scalability problem or cover the application server tier, which factors out the common server infrastructure from business logic implementations. As an example from the top universities, over the last five years MIT introduced a junior-level course “6.171 Software Engineering for Internet Applications” [19][20] which covers a subset of the topics that we cover in this project, but this course focuses on motivations and software design, and it depends on student self-study to fill in a lot of gaps. For example XML technologies are used in exercises for textbook’s Chapter 2 but are not introduced in the textbook. This could lead to difficulty in porting the course to the computer science programs with limited domain experts and resources. As another example from the average universities, during 20062007, the Computer Science Program of the Loyola University in Chicago offered a very popular new course “COMP388/488: Server-Side Software Development” [21] for undergraduate students who have just completed courses Data Structures and Algorithms and Introduction to Computer Systems (in C). This course basically covers the Web technology knowledge topic in our new course with focus on JavaServer Pages [22] and Jakarta Struts [22]. This course is also a proof-of-concept that undergraduate students can grasp the fundamental concepts and skills behind server-based computing. METHODOLOGY I. Iterative Teaching Model Education research [25][2] indicates that iterative teaching is more effective than sequential/waterfall teaching. Problem solving depends on many knowledge topics, and these topics often have tight inter-dependency among them. Waterfall teaching will limit students’ view of the complete education program and the type of engaging projects that the students can work on to enhance the learning process. Therefore we suggest that a new “Introduction to Server-Based Computing” course be introduced immediately after CS1 and CS2 as the end of the first iteration of the computer science education so the students can have a global perspective of their education programs and master the basic hands-on problem-solving skills during their junior year. This course provides practical overview for advanced data structures (vector, hash table, stack and queue), operating systems

978-1-4244-1970-8/08/$25.00 ©2008 IEEE October 22 – 25, 2008, Saratoga Springs, NY 38th ASEE/IEEE Frontiers in Education Conference T3B-13

Session T3B (Linux and Window shells, processes vs. threads, thread synchronization, critical region, and referential locality underpinning memory hierarchies), databases (database management basics, SQL language basics, database programming), networking (TCP/IP basics, socket-based networking and their software framework abstractions), component-based software engineering (component reuse and integration, component life-cycle management, factoring common infrastructure into component containers), XML (syntax specification of XML dialects, XML instance document parsing and validation, and language transformation), Web technologies (Web architecture, XHTML basics and HTTP, dynamic Web page creation and session management), Web services, and grid computing (parallel and distributed computing, grid services). This course will be followed by or in parallel with the second iteration consisting of courses including data structures and algorithms, operating systems and architectures, networking, as well as many elective senior courses. Due to this new course in the first iteration, the courses in iteration 2 can be taught in more flexible orders and with more depth and hands-on projects. For example students can work on a software engineering project without having taken a database course. The capstone course normally makes the 3rd iteration allowing students to integrate the learned knowledge topics in problem solving and learn new knowledge/technologies with limited instructor assistance, which is important in developing life-long learning abilities. Our approach is similar to the breadth-first approach described in ACM Computing Curricula 2001 [5]. But the breadth-first approach is usually implemented as an extra first course before CS1 to provide a program overview. Due to its timing it cannot cover advanced concepts or hands-on projects.

example it is not practical for students to learn the complete servlet or EJB container design and implementation within a week, but students can study a simplified software framework project to see how common functions can be factored out to a container and how the container can control the life cycle (instantiation, initialization, serialization, deserialization) of objects running in the container. This course is for providing program and technology overview, therefore its focus is for students to master the fundamental concepts and problem-solving skills. We purposely avoid industry-quality technology implementations because more than 80% of their code is for perfection or extra features not essential to understanding the fundamental concepts. PACE EXPERIENCE In 2006 Pace introduced a new lab-based course “CS612 Concepts and Structures in Internet Computing” for introducing the fundamental concepts and skills for serverbased computing to computer science students who have just finished CS2 and new computer science graduate students. The introduction of this course was one of the strategic steps for Pace University to attract more quality undergraduate students to its computer science program. The course has been offered three times at Pace University with great success. Pace’s course “CS612 Concepts and Structures in Internet Computing” closely followed the author’s textbook draft “Introduction to Server-Based Computing” [4] and has the following organization in its spring 2007 offering. A VMware [7] Windows Server 2003 Enterprise virtual machine with pre-installed and pre-configured course software were used to provide the students with the same lab environment on any Windows or Linux PC at university labs or at student homes.

II. Hands-On Problem-Solving Education research [2] indicates that motivated students are more effective ones. Today the traditional programming applications like calculators cannot motivate students much. Early on the students expect to see the connection between what they learn and what is happening in the real world, and how to apply their learned knowledge in problem solving. Therefore we integrate weekly hands-on projects as well as some design projects, like the design of an RSS framework for news feeds, into the teaching of each topic in the proposed “Introduction to Server-Based Computing” course. III. Scaled-Down Sample Projects for Real Technologies

Introduction to Server-Based Computing 1) Introduction (1 week) Topics: Challenges of enterprise computing: concurrency, scalability, atomic transaction, system integration, data integration, data persistency, complexity encapsulation. Fundamental computing paradigms: sequential, object-oriented, event-driven, and multithreading (as abstraction of real-world parallelism and a methodology for separation of concerns). Fundamental methodologies: abstraction and divide-and-conquer. Labs: Installation and configuration of Java JDK, Apache Tomcat, MySQL, Eclipse; setting environment variables PATH and CLASSPATH; learning organization, compilation and execution of classes in packages; deploying two sample Web applications Bookstore1 (Servlet) and Bookstore2 (JSP) in Tomcat;

One major reason that why we can cover so many important modern computing concepts and skills in a single course or a small set of course modules is because we use a set of welldesigned sample projects to lead the learning process. For each major topic we have carefully designed a set of sample projects for students to study, modify, and enhance. For 978-1-4244-1970-8/08/$25.00 ©2008 IEEE October 22 – 25, 2008, Saratoga Springs, NY 38th ASEE/IEEE Frontiers in Education Conference T3B-14

Session T3B creating database and tables for the bookstore sample projects with prepared SQL files. 2) Object-Oriented Computing Paradigm (2 weeks) Topics: Concise review of object-oriented computing, including packages, interfaces, class inheritance, polymorphism, exception handling, I/O, multithreading and synchronization, vector and hash table. (Textbook Appendix A provides reviews for students who need more warm-ups.) Labs: One or more two-page source code examples for each topic, starting from Hello World and growing incrementally in complexity. Compile and run each demo project on command-line and in Eclipse. 3) Client-Server Computing and the Internet (1 week) Topics: IP addresses, domain name, DNS, ports, TCP/IP fundamental concepts, sockets as communication abstraction, client-server architecture. Labs: A four-page client-server application for calculating disc areas by the server. Modifying the application to implement a server-based accumulator. Enabling concurrent clients. Using ThreadGroup to limit the number of concurrent clients. Running the applications among PCs in a lab and over the Internet. 4) Event-Driven Computing Paradigm and HumanComputer Interaction (1 week) Topics: Events, event sources, event consumers/listeners, interaction among event sources and their listeners; event-based system integration; database trigger concept; Java user interface components: text field, button and label; Java layout managers; Java listener interfaces for keyboard and mouse events. Labs: Java GUI programming with text fields, buttons, labels and panels. Implementation of a simple generic event-driven programs based on Java interface Observer and class Observable; design and implementation of interface MyObservable and class MyObservable with a Vector to duplicate the corresponding Java library implementation. 5) Component-Based Software Engineering (2 weeks) Topics: Software framework for factoring out the implementation of common functions of a class of applications; component containers vs. components; hook and slot methods; component life cycle management; thread pooling and synchronization; component-based networking; components vs. objects. Labs: Study a simple Object-Client-Server-Framework (OCSF) with four source code files for implementing

6)

7)

8)

9)

client-server applications. Implementation of a simple command-line instant messenger based on OCSF to see how socket-level details are abstracted into the software framework and developers only need to focus on business logics. Data Persistency (1 week) Topics: Database fundamentals. Database server machines, database management systems, databases, and relational database tables. SQL language basics. Primary key vs. foreign keys. JDBC and ODBC. Database atomic transactions. Labs: Use a one-page Java program to create a table, insert data, query data, and drop the table on MySQL. Modify the code to repeat the same experiment on Microsoft Access by creating a Windows system data source. Learn MySQL administration basics. Data Integration (1 week) Topics: Separation of data structure from data presentation; XML dialect specification with DTD, XML Schema and namespaces; data validation and parsing with SAX and DOM; data transformation with XSL. Labs: Exercise on all aspects of XML technologies with author’s XML demo applications; specification of news data structure with XML Schema; XML news data syntax validation with SAX; XML news data transformation into HTML files for desktop PC and cellular phone presentations. Web Computing (1 week) Topics: HTML form and its various supported fields; URL structure; HTTP GET and POST requests; the four-tiered Web architecture; the Web server architecture; role of application servers; session management with cookies, hidden fields, URL rewrite and server session objects; CGI vs. Java servlet/JSP Web applications; Web server configuration and security. Labs: Observe HTTP request/response messages; study simple Web applications illustrating session management; study the design and implementation of a Java Web Server with 20 pages of source code; add Perl CGI support to the Java Web Server; develop simple servlet and JSP applications for a guest-book application with guest information maintained in a MySQL database. Web Services and System Integration (1 week) Topics: Thin-client computing; service-oriented computing and architecture; Web services for integrating heterogeneous information systems across

978-1-4244-1970-8/08/$25.00 ©2008 IEEE October 22 – 25, 2008, Saratoga Springs, NY 38th ASEE/IEEE Frontiers in Education Conference T3B-15

Session T3B the networks; describing service interface methods and method invocation data with XML dialects WSDL and SOAP; the proxy design pattern; fast transformation of legacy applications for implementing Internet business services; tradeoff of client-side and server-side computing with Ajax; security issues with Web services and client-side computing. Labs: The author’s two-hour hands-on introduction to Web services on both Java platform’s Tomcat with the Axis toolkit and Microsoft Visual Studio .NET in C#, which also shows the cross-platform Web service invocation from Java to C# and vice versa. The Google Web Toolkit is used for introduction to the Ajax framework. 10) Distributed and Parallel Computing (1 week) Topics: Objectives and methodologies of parallel and distributed computing; grid computing; concurrency vs. parallelism; data mapping for distributed memory architectures; resource management and load balancing; introduction to industry standard Message-PassingInterface (MPI) [17] for parallel computing on PC clusters. Labs: Introduce to a pure Java grid toolkit that has small footprint and can be used to transport both data and binary Java code to PCs in a network to run Java applications in parallel. 11) Conclusion (1 week) Topics: Mapping of follow-up courses to the course concepts; mapping of the current IT technologies to the course concepts; identification and reiteration of fundamental computing paradigms and problem-solving methodologies that underpin the past 50 years’ computing innovations. The dependency among the first ten course modules is described in the following Figure 1. This course has been scheduled for both fall and spring offerings in computing labs. So far over 80 undergraduate students who just finished CS2 as well as new graduate students who have varied computing background have completed this course. In addition to the guided lab sessions integrated in the lectures, students need to complete one mini-project assignment each week for the week’s topics and complete one course project “Logic Design of an RSS News Feeds Framework” at the end of the course. The course project enables the students to apply their learned knowledge in XML data modeling, Web service system integration, and multithreading and event-driven programming into the design of the news feed server and reader application. All the students completed the course successfully.

1

10

2

6

8

3

4

9

7

5

Figure 1 Course component dependency

COURSE ASSESSMENT AND REFLECTION Since 2006 this course has been offered each semester with an average enrolment of about 18 CS graduate students, 2 IS graduate students, and 10 CS undergraduate students. Formative assessments, which include pre and post survey for each module, weekly short informal quizzes, midterm and final exams, and student interviews, have been used to guide the direction, depth and example projects of the course, and customize the course offering based on the academic background and interest of each class of students. Summative assessments, which include final exams, course projects, entry and exit interviews, and comparative student performance profile analysis in the following courses, has been used to evaluate whether the course modules have achieved their design objectives. The key questions used in our assessment mechanisms include whether the course (1) is accessible and engaging based on their CS2 background; (2) has increased their confidence in hands-on projects; (3) has helped understand the fundamental computing concepts and methodologies, and why the modern computing technologies are creative and iterative application of these concepts; (4) have motivated them and improved their performance in the follow-up senior courses. Based on our recent study of the follow-up performance of those students who took this course in 2006, relative to those who have not taken this course, these students have improved their performance in the operating system course by 11% (several of them created a GUI shell for the IBM mainframe’s z/OS, and some setup a WebSphere server cluster on an IBM BladeCenter and worked on the load balance problem), and in the software engineering course by 24% (most of them functioned as team project leaders in developing Ajax ecommerce Web sites with support for internationalization and multiple locales).

978-1-4244-1970-8/08/$25.00 ©2008 IEEE October 22 – 25, 2008, Saratoga Springs, NY 38th ASEE/IEEE Frontiers in Education Conference T3B-16

Session T3B CONCLUSION A new hands-on overview course for computer science and modern information technologies have been developed at Pace University, and its offerings in the last two years proved the effectiveness of the course in engaging students in computing programs, shortening computing program prerequisite chains, and introducing the latest IT technologies and challenges into computing education and research. The Pace University is ready to share the complete courseware with universities that are interested in adopting a similar course. REFERENCES [1]

[2]

Tao, L, “Integrating Component and Server Based Computing Technologies into Computing Curricula”, NSF Northeast Workshop on Integrative Computing Education and Research (ICER), Boston, MA November 3-4, 2005, http://gaia.cs.umass.edu/nsf_icer_ne Kurose, J; Ryder, B and et al., “Report of NSF Workshop on Integrative Computing Education and Research”, Northeast Workshop ICER, http://gaia.cs.umass.edu/nsf_icer_ne

[11] Qian, K; Tao, L and Fu, X, “An Active/Cooperative Role-based Open Source Digital Labware for Information Forensics,” Education, IEEE ICALT 2007, 07/07 [12] Lethbridge, T C and Laganiere, R, “Object-Oriented Software Engineering: Practical Software Development using UML and Java, 2nd Edition”, McGraw Hill 2005, ISBN 0-07-70109082. [13] Srinivasaraghavan, P, “A Pure Java Web Server with Servlet Container Support for Web Technology Education,” Master thesis, Pace University, 2003 [14] Cheng, G, “A Small-Footprint Pure Java Framework for Grid Computing on PC Clusters”, Master thesis, Pace University, 2007 [15] IBM WebSphere, http://www-306.ibm.com/software/websphere/ [16] BEA WebLogic, http://www.bea.com/framework.jsp?CNT= index.htm&FP=/content/products/weblogic/server/ [17] MPI, http://www-unix.mcs.anl.gov/mpi/ [18] VMware, http://www.vmware.com [19] MIT Course 6.171 Software Engineering for Internet Applications, http://ocw.mit.edu/OcwWeb/Electrical-Engineering-and-ComputerScience/6-171Fall2003/CourseHome/index.htm [20] Anderson, E; Greenspun, P and Grumet, A, “Software Engineering for Internet Applications”, the MIT Press, ISBN 0-262-51191-6, 2006

[3]

Tao, L; Qian, K; Fu, X and Liu, J, “Curriculum and Lab Renovations for Teaching Server-Based Computing”, ACM SIGCSE 2007, 03/07

[21] Loyola University course COMP388/488 Server-Side Software Development, http://www.etl.luc.edu/laufer/teaching/442

[4]

Tao, L, “Introduction to Server-Based Computing”, book draft used twice in 2006-2008 at Pace University, to be published by Wiley in 2008

[22] Jendrock, E, et al., “The Java EE 5 Tutorial”, http://java.sun.com/javaee/5/docs/tutorial/doc/

[5]

IEEE and ACM Joint Task Force on Computing Curricula, ACM Computing Curricula 2001 Computer Science Final Report, December 15, 2001

[23] Internet business service, http://msdn2.microsoft.com/enus/architecture/aa948857.aspx [24] Microsoft .NET, http://msdn2.microsoft.com/enus/netframework/default.aspx

[6]

Computer Research Association (CRA) Report, January 2005

[7]

http://www.vmware.com

[8]

Tao, L, “Shifting Paradigms with the Application Service Provider Model”, Computer Magazine, October 2001, pp 32-39

[25] Hadar, I and Hadar, E, “An Iterative Methodology for Teaching Object Oriented Concepts”, Informatics in Education, 2007, Vol. 6, No. 1, pp67-80; http://www.vtex.lt/informatics_in_education/pdf/INFE097.pdf

[9]

Tao, L, “Application Service Provider Model: Perspectives and Challenges”, book chapter in “Electronic Business and Education: Recent Advances in the Internet Infrastructure” edited by Veljko M. Milutinovic and Frédéric Patricelli, Kluwer, 2001

[26] Google Web Toolkit, http://code.google.com/webtoolkit/?utm_source=en-ha-na-us-googlej2jsc1b&utm_medium=ha&utm_campaign=en&utm_term=google%2 0web%20toolkit

[10] Fu, X; Qian, K; Tao, L, et al. “Static Analysis Framework For Detecting SQL Injection Vulnerabilities”, 31st IEEE Computers, Software, and Applications Conference (COMPSAC), 2007

[27] Tao, L, “Web Service Workshop”, http://csis.pace.edu/~lixin/pclc/ws/

978-1-4244-1970-8/08/$25.00 ©2008 IEEE October 22 – 25, 2008, Saratoga Springs, NY 38th ASEE/IEEE Frontiers in Education Conference T3B-17