A New Program in Information Technology - CiteSeerX

2 downloads 101593 Views 179KB Size Report
current status of the Information Technology Bachelor of ... United States, with all regions of the country ... Information Technology or have added Information.
A New Program in Information Technology Charles E. Hughes and Gerald A. Marin School of Electrical Engineering and Computer Science University of Central Florida Orlando, FL 32816-2362 Email: {ceh, marin}@cs.ucf.edu Abstract This paper describes the motivation, development and current status of the Information Technology Bachelor of Science degree program at the University of Central Florida. Our goal is to provide our particular point of view on what should comprise an IT degree and thereby to elicit open dialogue with others who may have similar or even completely differing points of view.

1. Introduction In a report written in 2000, Bridging the Gap: Information Technology Skills for a New Millennium, the Information Technology Association of America (ITAA) stated that the IT industry would create a demand in this country for roughly 1.6 million IT workers in that year [1]. With demand far exceeding supply, half of those positions—over 800,000—were thought likely to go unfilled. Today’s economic reality is significantly different from two years ago. Headlines refer to layoffs, the stock market has lost significant value, and most people in the IT industry have been personally affected in some way by downsizing, job freezes, or wage limits. When the ITAA updated their report in May 2002, their findings included the following: • “The 10.4 million-member IT workforce that ITAA measured in 2001 fell by 5% to 9.9 million workers in early 2002. In aggregate terms the U.S. IT workforce experienced a net loss of 528,496 workers over a 12-month period. Companies hired 2.1 million IT workers during the year, but also dismissed 2.6 million IT workers. • “IT firms lost 15% of IT workers, while non-IT companies dropped 4% during the same period.” • “Reductions were spread evenly across the United States, with all regions of the country losing five percent of their IT workforce… • “Ninety-two percent of IT workers work for non-IT companies.



“Software programmers and engineers are the single largest category of IT worker, constituting almost 21% of the total workforce, and the United States is home to 2,039,880 programmers. However, it was technical support workers who were most likely to be let go within the last year. • “Companies are optimistic about future hirings [sic] over the next twelve months.” Motivated, only in part, by the seemingly insatiable demand seen in 2000 a number of universities across the country have recently introduced new degree programs in Information Technology or have added Information Technology components to existing programs. While it is certainly difficult to predict in 2002 when demand will approach the levels of two years ago, we believe that strong IT programs address real needs for a combination of theoretical knowledge and practical skills that has been difficult to find in graduating students – especially in the numbers needed to fill the 92% of IT jobs in non-IT companies.

2. The IT Program at UCF 2.1 Program Overview In the fall of 2001 UCF officially began its Bachelor of Science Program in Information Technology (BSIT). This was introduced as the fourth undergraduate degree program in the School of Electrical Engineering and Computer Science, joining programs in Computer Science, Computer Engineering, and Electrical Engineering. The BSIT Program recognizes that IT professionals are not strictly computer scientists or computer engineers, and that the IT profession needs many more skills than computer programming, computer design and systems analysis. The following is a list of the IT job clusters recognized by the Northwest Center for Emerging Technologies, a strategic alliance of the National Science Foundation, Microsoft, Boeing and a variety of educational organizations:

1. Database Development and Administration 2. Digital Media 3. Enterprise Systems Analysis and Integration 4. Network Design and Administration 5. Programming/Software Engineering 6. Technical Support 7. Technical Writing 8. Web Development and Administration The reality that 92% of IT jobs are not in traditional IT companies suggests that students should have the flexibility to pursue a complementary area of concentration in addition to their core IT education. Thus, the UCF program provides for students to take a minimum of 15 elective upper division hours from any degree program available at the university. To date students have complemented their IT major with a concentration in Business, Computer Forensics, Mathematics and Statistics, Engineering Technology, Digital Media, Children’s Literature, Criminal Justice and a number of other areas. A few have chosen to take additional courses in Computer Science, Mathematics or various Engineering disciplines.

2.2 Program Requirements Figure 1 is a flowchart depicting the specific courses and upper-division electives that must be completed as part of a four-year BSIT Major at UCF. We observe first that there is a set of specific non-IT courses that our faculty felt were essential in a technical education. These are shown along the right margin in Figure 1 and include statistics, psychology, economics, and two writing courses. Deserving special mention in this category is a course entitled “Ethics in Science and Technology.” This course treats the ethical issue relevant to privacy, ownership, fraud, and research. Technology enables unethical behavior on an unprecedented scale including music piracy, identity theft, cell-phone cloning, theft of cable TV programming, violation of software licensing, and a host of computer security and information assurance issues. As we teach students how to leverage the technology, it is important that we help them consider how the availability of technology affects issues in ethics.

2.3 Math Requirements/Recommendations For many students a major hurdle in completing a degree in the College of Engineering is its demanding mathematical rigor. For example, the Computer Science degree requires, as a minimum, two semesters of Calculus, Linear Algebra, and Discrete Structures. Engineering degrees typically add differential equations. Both degrees require the calculus-based Physics sequence. We have sought to make the BSIT degree

approachable to a broader class of students by reducing the mathematical demands. At UCF we have created a special “pre-calculus” course (MAC 2147) for IT majors that includes algebra, trig, vectors, sequences and summation, and a brief introduction to probability theory.

MHF2104

COP3502

COP3223

CGS2545

MAC2147

Discrete Math

CS1

C Language

Databases

Pre Calc

COP3503

COP3330

CGS3269

EEL3520

CS2

OO Prog

Comp Arch

Info Theory

STA2023

PSY2013 PHY2053 ECO2013 EEL4882

COP4610L

CDA4506C

CET4483

EEL3041

Engr Softwr

OS Lab

Network Lab

LANs

Circt Analysis

-co req CDA4506C Lab Section COP4910

ENC3241

Frontiers IT

IT Major requires 15 additional upper division credit hours as follows: - six hours at 3000-level or above - nine hours at 4000-level or above

PHI3930 Ethics Sci/Tech

CRW3013 For IT Majors

prerequisite Pre-req or co-req

3/22/02

Figure 1. UCF BSIT Program Flowchart The other required mathematics course developed specifically for IT majors is an Introduction to Discrete Mathematics (MHF 2104). This course is less mathematically rigorous than the Discrete Structures course required of CS majors, but it is rigorous enough to familiarize students with basic set theory, propositional and predicate logic, functions, and proof techniques. This helps prepare them to analyze algorithms and complex systems. Although it is NOT required, any student who is considering graduate level studies in an area related to Information Technology is advised to take two semesters of calculus. The decision not to require Calculus was a difficult one that we made in order to keep required math courses to a minimum.

2.4 A Computer Science Foundation Fundamentally, UCF’s BSIT program is technical and includes a traditional foundation in Computer Science. The entry point is a course in C Programming. This is a thorough introduction that includes arrays, pointer manipulation and use of standard C math and I/O libraries. Although we have had discussion about introducing students to programming using JAVA or even C++, we believe there is value in beginning with a more traditional programming approach, and this is especially true for IT majors who are less likely than traditional CS majors to be assigned to design and develop significant

new application software or middleware. C Programming, then, is a pre-requisite to the next foundation course, Computer Science 1 (CS1), which focuses on problem solving techniques, order analysis and notation, abstract data types, and recursion – all illustrated in C. Typically students simultaneously take a course in Object-Oriented Programming (OOP) that introduces them to classes, objects, methods, encapsulation, inheritance, interfaces, threads, and the expression of these concepts in the JAVA programming language. The OOP course is a prerequisite for CS2, which includes object-oriented design, data structures, traversal techniques, and program correctness. A course in database concepts and another in computer architecture round out the CS foundation. The key areas that most IT majors will need to leverage in the workplace include system software, distributed applications, computer networking, database management, and web management. The IT Program introduces all of these areas and offers significant additional educational opportunity in each. From UCF’s Engineering Technology Department students interested in database management can take a two-sequence course that includes significant hands-on and design experience. Similarly the Digital Media Program helps students build on their web foundation through courses dealing with web design and electronic commerce. The glue that binds all these areas together is computer networking. Thus, the IT Program includes senior-level enterprise and computing networking courses each of which includes both theory and hands-on experience.

3. Distributed Applications in the Enterprise When we educate a computer scientist about distributed computation, we focus most of their energy on science (e.g., algorithm design and analysis), programming paradigms (e.g., message passing, remote methods, middleware mediated) and architectures (e.g., dedicated, shared). In contrast, the emphasis for information technology students needs to be more on issues of productivity, security and integration with the rest of an enterprise. They must understand how applications exist and interact in the enterprise setting. They often solve problems by assembling components in novel ways, as opposed to building individual components and assembly tools, tasks most commonly performed by computer scientists. In fact, an IT professional should take pride in accomplishing as much as possible with little or no original programming. The Distributed Applications in the Enterprise course we have developed gives students a broad understanding of the components that make up an enterprise's software assets and how these work in consort to achieve the goals of an organization. We emphasize component-based

application development architectures, such as Java 2 Enterprise Edition, including Java Beans, Enterprise Java Beans (EJB), Servlets, Java Server Pages (JSP), Java Naming and Directory Interfaces (JNDI) and Java Data Base Connection (JDBC). See http://java.sun.com for downloads and documentation on these technologies. Intermixed with this, we expose our students to some of the science and programming paradigms of distributed computing. The text we have chosen is Advanced Java™ 2 Platform [2]. We supplement this with handouts that cover the science and programming paradigm aspects of the course. We insist that our students use an IDE, typically Borland JBuilder Personal (available at http://www.borland.com). Additional tools include Sun One Studio and Sun Bean Builder (available at the Sun Java site), the Apache Jakarta Tomcat Servlet/JSP container (http://jakarta.apache.org/tomcat/) and the JBoss application server (http://www.jboss.org/.)

3.1 Concurrency Although all students who enter this course take prerequisite classes in operating systems and objectoriented programming with Java, we have found that they, like computer science students, have a limited understanding of the many consequences of concurrency. We start the course off with a discussion of threads and processes, focusing on Java threads. To emphasize the importance of writing thread-safe code, we give them an assignment concerning a sample program that has many threads. The program uses no synchronization, has serious race conditions, yet typically works when run on a single processor machine. For instance, in the fall 2002 semester we provided them with a Java program that sorts by assigning a separate thread to each interior element of an array, value[0..n-1]. The ith thread (0 < i < n-1) in essence carries out the following algorithm: forever { sleep for a random period of time up to a fifth of a second; if value[i] < value[i-1] swap (i, i-1); if value[i] > value[i+1] swap (i, i+1); } where swap is defined as swap (i, j) { temp = value[j]; value[j] = value[i]; value[i] = temp; }

Clearly, this has problems, e.g., if a thread loses control when it is in the middle of a swap. However, if the Java Virtual Machine is a single process running on a single processor, and if all threads give up control only when they sleep, each iteration of the loop acts like an atomic action, and there are no perceived race conditions. The task we assign to our students is to find all the potential problems in this rather simple multi-threaded example, add thread yields to expose those problems, and demonstrate the results. There are actually two very distinct types of problems here. First, losing control in the middle of the swap can cause the array to become corrupted with multiple copies of a single value replacing others. Second, losing control right after a decision is made to swap, but before swapping, can cause the sort to make wrong swaps. In that case, we may keep permuting values forever (although that is unlikely). From a theoretical point of view, the first case violates a safety condition and results in the program entering an invalid state; the second case violates a liveness condition and results in a failure of the program to converge to the correct result.

3.2 Component Creation and Assembly One of the early lessons that we attempt to convey to our students is that significant advantages come with the use of design patterns. For computer scientists and anyone who is creating large software systems, design patterns such as bridges and decorators provide advantages similar to algorithmic patterns like dynamic programming and divide-and-conquer; they provide strategies that can be used to attack large classes of problems effectively and efficiently. For an information technologist who does not intend to write large volumes of code, this advantage may seem too abstract. However, without the bean design pattern, Java's Beans introspection API would be useless; and without introspection, component assembly tools could not function. Thus, we introduce our students to a number of design patterns and reinforce this general concept many times so they understand that patterns can and should be employed in many ways. In particular, we note the use of the Decorator pattern in filtering encrypted and decrypted data. Our hope is that this knowledge will serve them well when they need to design or understand interfaces to both modern and legacy objects. To make component assembly concrete, we introduce them to two tools, Sun's Bean Builder and the bean assembly tools within Sun One Studio. We then provide them with a set of beans (this semester we provided them with cryptographic beans) and give them an assignment that requires them to assemble the beans into an application (in this case, one that stores and retrieves encrypted data using symmetric keys). The goals of this

assignment are to show them how easy it is to put together applications using component assembly (provided you have the right components) and to reinforce some other concept (in this case encryption, but in other semesters we may emphasize topics such as databases and multi-tiered systems).

3.3 Multi-tier Enterprise Applications Enterprise systems typically include services provided by simple client-server as well as more complex multitiered and (in some cases) peer-to-peer systems. In all of these, security is of paramount importance, and database access is critical to any business model. Thus, we spend about a week on security considerations (privacy, integrity, authentication and non-repudiation), encryption paradigms (public and private key, sessions and key stores), and on Java's support for these. We spend a similar amount of time reviewing relational database concepts (very quickly as they have had a full database course already) and introducing them to Java's Database connection (JDBC). We also present some science here, introducing them to optimization on query trees and to the invariant algebraic operations that make this possible. Our primary emphasis here is on multi-tiered systems. We first introduce Servlets, and the notion of a container that provides efficient and secure execution of a Servlet's services and enterprise-level management of the resources shared by multiple services. We then extend this notion to include Java Server Pages (JSP). The particular container (engine) we use is Apache Tomcat. This becomes the platform for which we require our students to design and implement their term projects. In particular, the projects must provide services that only require a web browser on the client end. Services are accessed through hypertext references to JSP pages. The invoked JSP must involve Java Beans and Servlets that are used to provide business logic and a database accessed through JDBC. At a minimum the database resides on a separate server from that accessed directly by the client.

3.4 Distributed Programming Paradigms We introduce our students to three distributed computing paradigms, channels (as exemplified by TCP/IP), distributed objects (as exemplified by Java's RMI and OMG's CORBA) and middleware-mediated (as exemplified by Jini/JavaSpaces). This part of the course may involve programming that is a bit more technical than IT majors typically encounter, but we feel that at least a conceptual knowledge is critical to their success. TCP/IP and its underlying UDP protocol are presented through simple examples, e.g., time and multiplayer game services. RMI and CORBA are demonstrated by a

bidding service. JavaSpaces is demonstrated by investigating its use as middleware for tier 0 devices (appliances), as well as serving as the communication/ coordination layer of a shared virtual world. In any given semester we may vary the choice of RMI, CORBA, or space-based middleware as the basis of a programming assignment. In the 2001-2002 semesters, the choice was CORBA. This fall we required students to make some small additions to our RMI bid system, adding new services. One added lesson that we hope they take from this is that one can add services to a system without disenfranchising those running older clients (ah, the beauty of interfaces). 3.5 Summary of Projects and Assignments We require our students to complete a number of small non-programming assignments that include concepts like design patterns, encryption paradigms and remote method invocation. Each assignment is reinforced by a programming activity. We also provide them with recent journal papers on enterprise systems, requiring them to read, summarize and draw conclusions from three approved papers of their choosing. Finally, we have them complete a multi-tier system (typically in a small team of two). The system they design and build must have, at a minimum, a web client layer, a middle tier that includes caching capabilities, and a back-end database. The activity is broken up into multiple phases, and a requirements document, use-case studies, a preliminary user’s document, and a mid-stage prototype are due prior to final submittal. 3.6 Observation The author who developed the Distributed Applications in the Enterprise course was also the designer and primary teacher of a related undergraduate computer science course at UCF, Concepts of Parallel and Distributed Processing. His experience with the IT class has been very encouraging (and fun). What he has found is that IT students appear to be a more interactive group, in general. Perhaps this major attracts more peopleoriented students. In any case, teaching them is a pleasure, as attendance is nearly 100% and they are involved in every class, asking and answering questions, and offering insights.

4. Design and Implementation of Data Communication Networks The goal of this senior–level course is to introduce students to the theory governing design, development, and operation of data communication networks and to

lead students through a number of lab-based exercises that illustrate these principles in action. Thus, the course is structured as a sequence of lectures and labs (reminiscent of a Freshman chemistry course, for example).

4.1 Teaching the Theory In a fairly traditional manner the lectures take students through protocol and network design issues by following a five-layer reference model. The lectures feature the operation of TCP/IP over Ethernet and the lab exercises complement this. However, other technologies (especially ATM and Frame Relay) are introduced to illustrate, for example, the relative benefits of connection-oriented technologies. Significant time is spent on the services and functions provided by the data link layer (including the MAC sublayer). Here, for example, we carefully review the formats of Ethernet frames (actually 802.3) and functions including frame delimiting, error control, and flow control. Included with less emphasis are ATM cells and Frame Relay. In addition we introduce ideas including bandwidth sharing, early research in the Aloha net, and contention resolution in Ethernet, Token Ring, and Token Bus. Students will be taught the role of MAC addresses at this layer, the protocols associated with sliding windows, and basic operation of the Ethernet binary exponential back-off algorithm. Later in lab exercises they will be taught how to use snoop or tcpdump to look at actual Ethernet frames and follow the protocols in action. In a course like this one the Network layer is at the heart of what students are learning. Thus, the course spends considerable time on topics relative to the theory at this layer including the following (and others): • Connection-oriented versus connectionless network layer operation • Functions and services provided by the network layer • Routing protocols, route forwarding, routing table implementation • IP addressing, address classes, subnet masks, subnets, supernets • The use of MAC addresses vs. IP addresses and the Address Resolution Protocol • Link-State versus distance-vector routing algorithms • Hierarchical routing • IP datagram format and interpretation of fields • Use of ICMP (and potential for abuse) • Address summarizing • OSPF, RIP, BGP • Router architecture overview

• Introduction to IPV6 • VLANs • Design of networks to include redundancy. The discussion of the transport layer focuses on the Transport Control Protocol (TCP) and User Datagram Protocol (UDP). This includes the functions that TCP must perform to provide reliable, in-sequence delivery across a network that provides unreliable service. The simpler function (and lower overhead) of UDP are introduced and the key role that port numbers play in TCP/IP are introduced and illustrated, again, using tools like snoop and tcpdump. This discussion leads naturally to a discussion of standard applications including SNMP, telnet, the world-wide-web, DNS, and others.

4.2 The Lab Exercises From the student perspective the enjoyment of this course centers on the lab exercises. Although it is not readily apparent in the above theory discussion, the labs actually are interspersed with the lectures and considerable effort went into having labs that unfolded in a way that illustrates the theory. Lab 1: Cabling. In this lab we discuss different types of cabling and its use. The students have the opportunity to make straight-through and crossover cables and to test their finished products using a cable tester. This introduces them to the use of cables, crimping tools, strippers, punch-down tools and panels, cable cutters, and cable testers. Lab 2: Workstation Configuration. Lab 2 is designed to teach students how to configure their workstations in this environment. Students first learn how to check the current configuration of the interfaces and routing table in both a Windows and Sun Solaris workstation. Then they assign the appropriate IP address using the correct subnet mask (concepts taught in class). When their workstation configurations are correct, they are able to ping other workstations on their LANs. Lab 3: Router and Switch Configuration. At the beginning of Lab 3 student teams learn that their Windows and Solaris workstations are correctly configured and that they must now configure their default routers (one per LAN segment) and, working together, must configure the Cisco 5500 switch that physically provides the backbone. Because the router configuration has been erased (since Lab 2), students can no longer use telnet to connect to their default router. Instead they must use a serial interface from the workstation and connect directly to the router’s console port to provide the initial configuration data manually. Once connected to the console port of the default router, students are shown how

to log into the router, review the existing configuration, and update the configuration of the Ethernet interface and the entries in the routing table. Lab 4: VLANs and Campus Connectivity. The six default routers are configured in the preceding Labs so that each can route to the others directly across the backbone LAN. This LAN is physically provided by a Catalyst 5500 switch, which has a module with 24 RJ45 Ethernet ports. Each of these ports can be assigned to a virtual LAN (VLAN) and the 5500 switch also contains a Route Switch Module (RSM) that provides routing services among these VLANs. Thus, the six default routers are assigned to a single VLAN and the RSM has an interface assigned to that VLAN and another assigned to a port that connects to the UCF campus network. To associate internal and external addresses the RSM supports functions called Network Address Translation (NAT) and Port Address Translation (PAT). Students are taught how to enable these functions as well. Lab 5: Monitoring and Analysis of Network Traffic. Once the basics have been covered (labs 1 through 4), students are ready to start the process of “sniffing” to look at realistic network traffic. Sniffers are tools that can be used to monitor network traffic, to record traffic, and to analyze traffic that has been recorded. The best known tool of this type is called tcpdump, which is a UNIX tool that can be downloaded from www.tcpdump.org. Most UNIX systems include a man page that describes tcpdump capabilities. There is a windows version of this tool called windump that is available at http://windump.polito.it/install/default.htm. As it happens, however, the SUN Solaris workstations have a utility called snoop that provides similar capabilities. Lab 5 concentrates on the use of snoop and includes some introduction to tcpdump and to a userfriendly interface to tcpdump called ethereal (www.ethereal.com). Lab 6: Address Resolution Protocol. Experience indicates that students have some trouble understanding the respective roles of the MAC addresses carried in Ethernet (or IEEE802.3) frame header versus the IP addresses carried in the IP datagram header. The respective roles are stressed during the class lectures and students are introduced to the Address Resolution Protocol (ARP) that is used to find the MAC address that corresponds to a given IP address. Using the snoop utility from Lab 5 students are now ready to see ARP in action. This is accomplished by showing them how to examine the ARP table in their workstation, how to erase the existing entries, and how to watch the protocol operate by issuing a ping and observing their workstation interface using snoop. This is an example where a “live”

network experience is worth more than about an hour of classroom explanation. Lab 7: Building a Redundant Network. Lab7 has earned the nickname “the dark lab.” For this lab students are given a diagram of a redundant network design that is different from the previous designs they have configured. Lab instructors have disconnected all of the network nodes; they have erased any useful configuration data; they have turned off power in the routers and switches. It is up to the students (working one team at a time) to setup and configure the network according to the diagram. Students must design a consistent set of routing tables for all routers in the network. Others must ensure that all of the physical connections are restored. Others must actually enter all of the configuration information into the boxes. The team must also determine the proper order in which the configuration steps must be accomplished. Lab directions include the following: • Check the network for accuracy of connectivity. List the tests that you complete to ensure connectivity. • Are you willing to certify that this network is working correctly? When a team successfully completes this exercise they have come a long way towards mastering basic network design and configuration. Remaining Labs: Through Lab 7 all labs concentrate on skills associated with manual configuration of workstations, switches, and routers. By this time in the course, however, students have seen routing algorithms that will build routing tables automatically. In Lab 8 we show them how to enable the routing algorithm that the Internet Engineering Task Force currently recommends. It is called the Open Shortest Past First (OSPF) algorithm. Its use is slightly tricky in a hierarchical network, but when done correctly, students can disconnect certain links

or kill the power on certain nodes and see that the network keeps operating using redundant links and nodes with routes that get updated automatically. Lab 9 then introduces a few application layer considerations. Students learn how to develop a simple TCP client and a simple UDP client. This is followed by exercises in which they download and install web servers on UNIX and Linux workstations. Lab 10 wraps things up by introducing the basics of traffic generation and performance measurement.

4.3 Observation It seems that even among networking professionals there are few who can design optimal algorithms for routing or bandwidth management and simultaneously understand how to install, setup, configure, test, and tune the performance of networking equipment. One of the reasons this course is challenging for students is that it moves them back and forth across this “great divide.” On the one hand they must be able to demonstrate how Dijkstra’s algorithm is used by OSPF to determine optimal routes. On the other hand, they must enter the correct configuration information to enable OSPF to work in a redundant network design with a 3-level hierarchy. We hope that getting both perspectives early in their professional education will enable students to be more flexible.

5. References [1] ITAA, Bridging the Gap: Information Technology Skills for a New Millennium, Information Technology Association of America, 2000. [2] H. Deitel, P. Deitel and S. Santry, Advanced Java™ 2 Platform, Prentice-Hall, 2002.

Suggest Documents