design, programming in C/C++ and Java, software quality assurance, data communication in network- ... for teaching online the computer science courses.
144
Chapter 8
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment Vladimir V. Riabov Rivier University, USA
ABSTRACT The author shares his experiences teaching various online computer-science courses (via the Blackboard™ and synchronous web conferencing tools) using state-of-the-art free-license software tools for conducting online virtual labs and numerous students’ projects. The labs were designed to help students explore modern, sophisticated techniques in several areas of computer science: computer-system analysis and design, programming in C/C++ and Java, software quality assurance, data communication in networking systems, computer security, system simulation and modeling, numerical analysis, image processing, multimedia applications, Web development, and database design and management. All the online courses include “warm-up” exercises and lab-based projects that provide students with knowledge, instructions, and hands-on experience, and that motivate them in selecting topics for technology overviews and research.
INTRODUCTION The collapse of networking industry in 1999-2000, the world economic crisis of 2008-2010, and visa restrictions for international specialists and students (that were enforced after the terrorist attacks of September 11, 2001) changed dramatically the student population in colleges and universities DOI: 10.4018/978-1-4666-3930-0.ch008
nation-wide (Bollag, 2004). Enrollment continues to decline in both undergraduate and graduate computer science programs (Zweben & Aspray, 2004; McCormack, 2005), particularly putting at risk small computer science programs in liberal arts colleges, which heavily depend on the international students’ enrollment. At the same time, companies still demand fewer, but better prepared computer engineers with solid knowledge and hands-on experience.
Copyright © 2013, IGI Global. Copying or distributing in print or electronic forms without written permission of IGI Global is prohibited.
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
All these factors have to be considered seriously and must be reflected in searching new approaches for teaching online the computer science courses. In this chapter, the author shares his experience in re-designing the computer science curriculum for teaching courses online. His teaching methods (Riabov, 1997; 2000a; 2000b; 2006a) are based on several techniques (Riabov, 2002a; 2002b; 2005b; 2006a) that challenge and motivate students to become passionate in their studies and be active in the virtual classroom environment. Starting every class session with small challenging “warm-up” exercises (Sabin et al., 2005; Riabov, 2006a; Riabov & Higgs, 2011), the instructor encourages students to select and develop their own projects. He provides them with examples of the best achievements of professionals in the related fields of expertise (Riabov, 2004; 2005a; 2006b), the best projects of students (available on the instructor’s Website, http://www.rivier. edy/faculty/vriabov/), who took similar courses in the past, and the challenges of the discipline (Riabov, 2012a). This paper demonstrates the advantages of using a project-based approach (Riabov, 1997; 2000a; 2000b; 2002b; 2003; 2006a; 2007; 2011) in online course delivery that motivates students in studying and learning modern computing technologies. “Warm-up” exercises, online discussions of recent research publications, lectures, and virtual labs stimulate students in selecting topics for their technology overviews and research projects and provide them with knowledge, instruction, and hands-on experience. The students, who accept the challenge of innovation in computer science areas, display their successes by presenting their work at national and international conferences (Milkovits, 2005; Selent, 2011), publishing their project reports in the Rivier Academic Journal (2012), and promoting their findings among their college peers and their colleagues in companies and organizations (Riabov, 2005c; 2005d).
The chapter is organized as follows. In next section the author presents an overview of computer science curriculum and various courses that are taught online (via the Blackboard™ and synchronous web conferencing tools) at Riveir University. Examples of “warm-up” exercises, lecture notes, and course assignments offered online in the LMS environment are discussed. The software tools available for students and instructors are analyzed in the special section. The core of the chapter includes the sections, in which the author describes what makes the online courses challenging and valuable for students. These sections also include students’ responses on conducting online virtual labs by using various state-of-the-art free-license software tools and lab manuals, examples of their overviews of modern computing technologies with demonstration of computer-system simulations, and examples of students’ research studies. The effectiveness of the online courses, advantages of using synchronous web conferencing tools in online course teaching and learning, and students’ responses are discussed in these sections as well. The chapter concludes with Acknowledgments and Conclusions sections.
CURRICULUM CHALLENGES Riveir University offers two computer science graduate programs (M.S. in Computer Science and M.S. in Computer Information Systems) in traditional (face-to-face), hybrid, and online formats. The computer-science courses that represent the core and electives of the programs are shown in Table 1. All the courses have three interrelated major goals: •
Introduce students to fundamental concepts in specific computer-science areas and some of their relevant applications,
145
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Table 1. Computer-Science Course Offerings COURSE
Course Type
Traditional (face-to-face) Option
Hybrid Option
Online Option
CS 552 - Object-Oriented Design
core
8-week
8-week
CS 553 - Networking Technologies
core
8-week
8-week
CS 554 - Operating Systems
core
14-week
8-week
8-week
CS 556 - Computer Architecture
core
14-week
8-week
8-week
CS 557 - Algorithms
core
14-week
14-week
14-week
CS 572 - Computer Security
elective
8-week
8-week
CS 574 - Computer Graphics
elective
8-week
8-week
CS 578 - Advanced Networking
elective
8-week
8-week
CS 582 - Practical C++ Programming
elective
14-week
14-week
14-week
CS 585 - Practical Java Programming
core
14-week
14-week
14-week
CS 586 - High Octane Java
elective
14-week
14-week
14-week
CS 597 - Multimedia and Web Development
elective
14-week
14-week
14-week
CS 608 - Software Engineering
elective
14-week
8-week
8-week
8-week
8-week
CS 610 - Database Management Systems
core
CS 611 - Database Programming
elective
14-week
14-week
CS 612 - Information Technology
elective
8-week
8-week
CS 616 - Data Mining
elective
8-week
8-week
CS 632 - Client/Server Computing
elective
8-week
8-week
CS 662 - Intelligent Systems
elective
8-week
8-week
CS 664 - Knowledge-Based Systems
elective
8-week
8-week
CS 680 - Software Quality Assurance
elective
14-week
8-week
8-week
CS 690 - Topics in Computer Science
elective
14-week
8-week
8-week
CS 699 - Professional Seminar
elective
14-week
14-week
14-week
CS 700 - Reading and Research
optional
14-week
14-week
14-week
•
•
Have students take an active role in their learning by experimenting with various techniques and software tools (Riabov, 2006a; Riabov & Higgs, 2010a; 2011), and Instruct students in writing overview papers on modern computing technologies and in conducting their own research studies.
The courses are Web-enhanced, and a student can access remotely any course material (a syllabus, class schedule, assignments, lecture
146
14-week
14-week
notes, lab manuals, examples of project papers and research reports, Internet links, lists of recommended readings, etc.) from the instructor’s Web and Blackboard™ sites. This “virtual” learning environment supports communication between students and the instructor, as well as among peers working together on a team project beyond the classroom. Also, it becomes a valuable resource for those students who have missed a class, or continue working online. Originally, all the courses were offered in the 14-week traditional (face-to-face) format only.
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Since 2005, courses that do not require significant programming efforts have been transformed for offering in the 8-week online and hybrid versions (see Table 1). Many graduate students employed by local companies still prefer to attend traditional and hybrid classes and participate in the lecture discussions and ‘real’ (not ‘virtual’) team projects. The major programming courses in Java, C++, SQL, HTTP, and XML, as well as courses involving significant student’s efforts in developing and implementing algorithms or final projects (see Table 1), are also offered online, but during the 14-week period, because the development of programming and algorithmic skills require longer time in comparison with the time spent for traditional lectures and labs following manuals and simple instructions. One of the major challenges of designing online computer-science courses has been the proper choice of software tools that are the state-of-theart (the same tools or similar ones to those used in the College labs for traditional courses) and that are available for students working at home (Riabov & Higgs, 2010a; 2011).
MANAGEMENT OF ONLINE COMPUTER-SCIENCE CLASSES Blackboard™ has been selected as a management environment tool for running all computer-science online (or hybrid) courses. The course materials are organized on weekly basis using folders that contain “warm-up” exercises, lecture outline slides, links to software downloading sites, software installation instructions, tutorials, lab manuals, and weekly homework assignments. The individual project assignments and final exam questionnaires are allocated in the special “Assignments” section folder. The “Course Materials” folder contains examples of students’ projects from the previous course sessions, URLs to original research papers on course advanced topics, and links to
additional resources available on the instructor’s web site (Riabov, 2012b). A special section on the Blackboard site is designated to students’ project presentations and progress reports. Students are also encouraged to submit their project reports for peer-reviewing and online publishing in the Rivier Academic Journal (2012). Unfortunately, Blackboard™ tool (as many other online course management tools) limits live or synchronous communication (typical with face-to-face class communication) to “chat” rooms. One of the new trends in online teaching and learning is “the adoption and integration of web conferencing tools to enable live online classrooms and recreate the ethos of traditional face-to-face sessions” (Sabin & Higgs, 2007). In addition to Blackboard™ course tools (e.g., Discussion Board, Blogs, Collaboration, Self and Peer Assessment, etc.), many online computer science courses at Riveir University utilize state-of-the-art web conferencing software called LearnLinc™ (2012), an iLinc™ Communications, Inc. product, a tool tailored to support “live” online learning through integration of audio and video over the Internet, text messaging, an interactive white board, synchronized browsing, and application sharing. LearnLinc sessions transform online classes into engaging, participatory, and personalized learning environments (Cooper, 2006). In the 2006-2007 academic year, Riveir University offered twelve courses, enrolling over 150 students that used the synchronous online teaching capabilities of LearnLinc. “Students who took courses [offered] in the online or hybrid format experienced a comparable level of interaction, participation, and collaboration as in traditional classes” (Sabin & Higgs, 2007). The students underlined in their course evaluations that the synchronous web conferencing helped them effectively in seeking instructor’s assistance during the virtual office hours, managing time on task, and exercising problem solving skills.
147
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
SOFTWARE TOOLS AND LABS FOR ONLINE COMPUTERSCIENCE COURSES Computer System Analysis and Design Tools for Implementation of the Unified Modeling Language Approach Visual Paradigm™ for UML (Community Edition) tool (Visual Paradigm, 2012) was selected for exploring and conducting virtual labs in online courses on software engineering and computer/ informa-tion system analysis and design. This tool allows students to build various diagrams by using the Unified Modeling Language (UML) approach for object-oriented system design (Dennis, Wixom, & Tegarden, 2009). Online tutorials and lab manuals provide students with instructions and examples of developing Use-Case, Activity, Class, Object, Collaboration, Sequence, and Package diagrams and State-machine charts that have become a part of students’ projects. A more limited set of diagrams could also be built by using ArgoUML™ (2012) and VIOLET™ (2012) Open Source software tools.
Examples of Student’s Projects for Object-Oriented System Design All the software engineering steps in the development and implementation of the individual capstone project by using the object-oriented design approach are described in detail by one of the graduate students, in his report, “Personal Encrypted Talk - Securing Instant Messaging with a Java Application” (Snogles, 2005). The primary goal of the project was to secure Instant Messaging Communication between two parties on the Internet. The Personal Encrypted Talk (PET) system was designed to operate on Microsoft XP and Microsoft 2000 machines with an active connection to the Internet. Microsoft Visio™ with
148
UML Template and Jude™ UML Community Edition (Version 1.4.3) were used as UML tools for object-oriented system analysis and design. The State Chart provided details of the interaction of multiple users with the PET application. It illustrates the exchange of secret keys according to the Diffie-Hellman asymmetric key agreement protocol (Kaufman et al., 2002). The sequence diagram was used to solidify the interaction of the main components of the PET system and its end users. UML diagrams were developed for all eleven classes and integrated into a system-level UML class diagram. The (UML) approach was used by another graduate student, in his project, “Musician Webservice Using Ruby-on-Rails, SOAP, FLEX, and AJAX” (Dion, 2006). His system provides musicians with a web service to communicate with other musicians and their fans. The large package exchange was implemented. The Use-Case diagrams and User-Interface State charts were used in the system analysis and design for this project.
Programming Fundamentals In programming courses, one issue that commonly arises is whether or not to use an Interactive Development Environment (IDE) (Riabov & Higgs, 2010a). It is certainly possible to use only an intelligent editor, combined (usually) with the command line interface for that operating system, programming language compiler and run-time. Suitable intelligent editors typically can be configured (or come preconfigured) for the programming language, providing suitable syntax coloring, syntax completion, and even intelligent reformatting/beautification of code. Examples of such freely available intelligent editors include JEdit (2012), Crimson Editor (2012), TextPad (2012), NoteTab Lite (2012), SourceEdit (2012), and Notepad++ (2012). GNU emacs (2012) is the ultimate configurable editor, but it does have a fairly steep learning curve, and so may not be the best choice for beginners.
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
The advantages of using an IDE include (Riabov & Higgs, 2010a): 1) An environment that supports more aspects of the language being used for development; 2) Compilation, execution, debugging, and often testing can be performed without leaving the environment; 3) Usually, the easy availability of language-specific help and reference materials. That an IDE typically provides a visual debugging environment, and that it protects the student from exposure to an often user-hostile command line interface, cannot be too strongly emphasized, regardless of the student level. The main disadvantage of using an IDE is: an IDE is typically a more complex environment, which may force students (particularly beginners) to have to learn too many things at once in order to become productive (it is important to note that the BlueJ IDE (2012) is an exception to this, as it is designed for beginners, with a proven pedagogy in mind).
for Windows (MinGW, 2012). There also exists a MinGW Studio C++ IDE for the MinGW environment (MinGW Developer Studio, 2012). Other C/C++ IDEs include Dev C++ (2012) and Code::Blocks (2012). It has been found (Riabov & Higgs, 2010a) that it is often beneficial to use more than one IDE and C++ compiler (even different compilers on the same operating system). The above-mentioned tools have been used for conducting virtual labs in online courses on C++ programming. The lab manuals and numerous exercises that have been used for online instructions are available from the supplements that accompany the textbooks of Brookshear (2009), Dale (2003), and Lippman et al. (2005), or other available relevant textbooks. Students develop object-oriented implementations of basic data structures (e.g., stacks, queues, lists, etc.), and, following lab manuals, explore data storage and data manipulation in computer systems.
C/C++ IDE
Java IDE
Microsoft Visual Studio™ (2008) is traditionally used for running the face-to-face courses on C/ C++ Programming. Visual C++ 2008 Express Edition is available for free download. For teaching these courses online, Visual C++ 2008 Express Edition could be used, or alternatively, some Open Source software tools could be effectively used, e.g., Eclipse (2012) with the CDT (C/C++ Development Tools) Plug-in (2012), & GNU C++ (2012), NetBeans C/C++ support (2012) & GNU C++, the V Portable C++ GUI Framework (2012), and Qt (2012). Higgs and Sabin (2005) recommended Eclipse with the CDT (C/ C++ Development Tools) Plug-in, & GNU C++ (2012) as the leading contender in this area, followed by the Open Source version of Qt (2012). However, since then, NetBeans C/C++ support (2012) (with GNU C++) has improved, and it is now a viable option. Perhaps the best way to provide GNU C++ on Windows is to install the Minimalist GNU
There are many options for Java Interactive Development Environment (IDE) settings that could be used for online instructions. Among others, the good candidates are: Eclipse™ (2012), NetBeans™ (2012), Borland JBuilder™ (2012), and (for beginning programming courses) BlueJ™ (2012). Higgs and Sabin (2005) have recommended Eclipse (2012), an Open Source project, as the leading contender that is acquiring a great deal of vendor support. NetBeans (2012) is available free for non-commercial use, and is also a very strong contender. Borland™ developed JBuilder, which became one of the most popular Java IDEs. However, in 2006, Borland focused its business strategy towards the Eclipse IDE, and moved JBuilder development to a new subsidiary, CodeGear, which has recently been purchased by Embarcadero Technologies, Inc. In the process, JBuilder’s market presence has suffered. CodeGear™ has a freely downloadable version
149
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
of JBuilder that runs on a number of platforms, including Windows and Linux. Neither NetBeans nor JBuilder are strictly Open Source products. All of the major Java IDEs (like all of the major C/C++ IDEs) are rather complex, being primarily focused on production programming and productivity for experienced programmers, usually in a team environment. They are less than ideal for the beginning programming student, who can be overwhelmed, unless the instructor augments their documentation with simple instructions on what to do to create a project, populate it, and develop it. However, these IDEs have been used successfully in many programming courses at Riveir University, in which students have typically been able to focus on learning the language, and done well (Riabov & Higgs, 2010a). An exception to this is in the very beginning level programming courses, where we have used the BlueJ (2012) IDE in combination with its associated textbook (Barnes & Kölling, 2004). BlueJ is an academic-inspired product that is focused on the effective teaching of beginning ObjectOriented programming in Java. While the BlueJ IDE could be used without using its associated textbook, the two do really go together very well, and their joint use is recommended for beginning Java programming courses. Our results using the combination have been very encouraging. Numerous lab manuals and exercises are already available for online instructions. Among others, we recommend lab manuals that accompany the textbooks of Horstmann and Cornell (2007), Flanagan (2005), Barnes and Kölling (2004), Lewis and Loftus (2003), Wu (2006), and Weiss (1999). Examples of implementing recursive algorithms in Java could be found in the book of Pevac (2005). Many students develop sophisticated Java programs for their individual capstone projects. In implementing the Personal Encrypted Talk (Snogles, 2005), for example, one of the graduate students successfully used Java 1.5 as the development language with the Borland JBuilder
150
X Personal Edition interactive development environment, Java servlets and applets, and the Swing Library for development of user interfaces.
Other Programming Languages and Systems Besides C++ and Java, other programming languages have become very popular of late, both in the real world and for teaching of programming techniques in introductory courses. We have plans to start teaching scripting languages, such as Python, Ruby, and others (including PHP for Web server use), in the near future, as a response to the increased relevance of those languages in the real world. One of the graduate students successfully used Ruby instructions in development of his project, “Musician Web-service Using Ruby-onRails, SOAP, FLEX, and AJAX” (Dion, 2006). Linux systems (notably Ubuntu Linux) have a rich set of tools available, either provided on the initial system install, or by relatively easy separate installation. Ubuntu’s system package add/ update/remove environment allows the installation of many programming environments, including KDevelop (2012), which supports a number of languages including C/C++ and Ruby. Note that NetBeans is supported on Ubuntu, and other Linux systems, as is Eclipse.
Data Communication in Networking Systems The online classes on networking technologies have been designed as virtual hands-on computer labs (Riabov, 2006a), (Wooley, 2002), that help students in understanding case studies and finding the ways of solving them. The OPNET IT Guru™ Academic software package (2012), a unique free-license application that offers all the tools for virtual network model design, simulation, and analysis, was selected for online instruction. OPNET software can simulate a wide variety of different networks, which are linked to each
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
other through routers and switches. Students could work from their home PCs independently to simulate different network technologies (ATM, Frame Relay, X.25, Fiber Optics, Wireless, etc.) and study visually the impact of various factors (e.g., traffic load, bandwidth, data rate, etc.) on the network (Kumar, 2005). Providing means for analysis and modeling of network performance, OPNET IT Guru™ tool can also be used for studying data message flows, packet losses, link failures, bits errors, etc. Following the methodology described by K. Brown and L. Christianson (2005), L. Peterson and B. Davie (2005), and R. Panko (2012), twelve online lab assignments have been designed and offered to students for exploring the Ethernet, Token Ring, Switched Local Area Networks (LANs), Frame Relay (FR), Asynchronous Transfer Mode (ATM), Routing Information Protocol (RIP), Open Shortest Path First (OSPF) protocol, Transmission Control Protocol (TCP), Queuing Disciplines, Resource Reservation Protocol (RSVP), Firewalls, and Virtual Private Networks (VPNs). Using this knowledge and skills, students develop their own lab projects (Kumar, 2005) and include virtual lab techniques into their research projects (Sood, 2007) which involve various network application protocols, such as File Transfer Protocol (FTP), Simple Network Management Protocol (SNMP), and Simple Mail Transfer Protocol (SMTP) (Riabov, 2006b). Hnatyshin and Lobo (2008) have recently published an overview of undergraduate data communications and networking projects that use OPNET and Wireshark (2012) software. Confirming our experience, they have also found that these labs help undergraduate students understand fundamental networking concepts through modeling and simulation of computing systems. Another valuable network simulation tool is OMNeT++™ (Varga, 2004), which is free for academic and non-profit use. OMNeT++ is a public-source, component-based, modular and
open-architecture simulation environment with strong GUI support and an embeddable simulation kernel. Its primary application area is the simulation of communication networks and, because of its generic and flexible architecture, it has been successfully used in other areas such as the simulation of IT systems, queuing networks, hardware architectures and business processes as well. OMNeT++ is rapidly becoming a popular simulation platform in the scientific community and academia, as well as in industrial settings. Several open source simulation models have been published (Varga, 2004) in the field of internet simulations (IP, IPv6, MPLS, etc), mobility and ad-hoc simulations and other areas. One of the graduate students used OMNeT++ for modeling and simulating the performance of digital video clusters for his research project and delivered a presentation of his findings at the Winter-2005 International Conference on Simulation Methods (Milkovits, 2005). Following his example, other students applied the OMNeT++ tool in their research studies of clustered Storage Area Networks (Riabov, 2004), wireless sensor networks, and distributed network systems.
Image Processing and Multimedia Applications This topic is usually covered in the introductory computer science courses, e.g. in CS120 Introduction to Computing course, which is a pre-requisite foundation course for all graduate computerscience courses at Riveir University. Following the teaching methodology of Guzdial (2005), a set of virtual (online) labs was designed to teach students how to manipulate images, sounds, text, and movies. This media computation approach is based on basic programming in Jython (2012), the specific Java-implemented dialect of the executable Python pseudo-code (2012). A special programming environment called JES (Jython Environment for Students) (2012), (Guzdial,
151
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
2005), made it easier to program in Jython, allowing students to do multimedia across multiple computer platforms. The labs include Exploring and Modifying Pictures, Creating a Collage, Exploring and Modifying Sounds, Composing Sounds, Modern Music Synthesis, Creating and Modifying Text, Making Text for Web, Creating and Modifying Movies, and Creating Graphical User Interfaces.
Web Development Students are usually encouraged to create Webbased portfolios in computing courses (Higgs & Sabin, 2005), (Sabin, et al., 2005). This educational approach helps students by providing increased learning, through course and curriculum management, by developing Web design skills, and by providing a vehicle to promote their achievements and skills during job interviews or promotions. Adobe DreamWeaver™ is the gold standard for developing web sites. Unfortunately, it is very expensive for students to purchase, even with an educational discount. Adobe’s Academic Edition™ is also still too expensive for many of our students; a college-wide site license might be the best approach for hybrid courses. In the past (before 2003), Microsoft FrontPage™ was frequently used by instructors and students (Sabin, et al., 2005) to create Web-based portfolios. The advantages of using Microsoft FrontPage™ have been described by Higgs and Sabin (2005): •
152
The ability to easily create web pages/sites without resorting to writing HTML tags directly. Users can construct a web page in a way similar to using Microsoft Word to create a document, using a “what you see is what you get” (WYSIWYG) interface.
• •
The ability to easily publish web pages/ sites to a web server, using either FTP or Front Page Extensions. The ability to very easily create a web site with a consistent look-and-feel and navigation controls, and to be able to change that look-andfeel for the entire Web site in seconds.
Unfortunately, Microsoft™ Corp. no longer supports Microsoft FrontPage™, and instructors continue searching for alternatives among Open Source platforms. In 2006, Microsoft introduced a suite of Web development products called Microsoft Expression. One of those products, Microsoft Expression Web, was the replacement product for Microsoft FrontPage™, but unfortunately, it was not 100% compatible with its predecessor. The focus of Expression Web is to produce a more powerful Web development product, emphasizing Microsoft’s proprietary ASP.Net technology. In the process, they sacrificed, to a considerable extent, the ease of use of FrontPage™. In particular, the convenient approach for generating navigation controls in the FrontPage™ was replaced with a different mechanism. However, Microsoft Expression Web has reasonable academic pricing. Unfortunately, there has been a tendency for colleges and their students to use Microsoft Word and other Microsoft Office products to produce Web-based portfolios. This is not a good idea, because those products were not truly designed for the Web, and this practice locks the student into a proprietary (albeit familiar) solution (Riabov & Higgs, 2010a). The HTML code generated by these products is very Microsoft-specific. Possible replacements for Microsoft FrontPage™ are discussed in the next section.
Web Authoring There are basically three aspects to Web authoring: 1) [eXtensible] Hypertext Markup Language [X]
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
HTML editing; 2) Cascading Style Sheet (CSS) editing; and 3) JavaScript editing. These three technologies are considered the ‘three-legged stool’ of Web development. In addition, a consistent browser experience should be considered a mandatory characteristic of a successful Web site. Browsers are notoriously incompatible and it is important to be able to create web sites that work across the major browsers.
editor, or a reasonably intelligent editor, as long as it provides the necessary semantic assistance. There are a number of intelligent editors that support CSS syntax, but not necessarily CSS semantics. The reader is referred to the earlier list of intelligent editors; most of them will support CSS, at least at the syntax coloring level. One very useful little tool, TopStyle Lite™ (2012), is available for free download for Windows systems.
[X]HTML Editors
JavaScript Editing
Only few Open Source Web-page editors with a WYSIWYG interface are available, including Nvu™ (2012), Mozilla Composer™ from Mozilla Suite (2012), and Trellian WebPage™ (2012). According to Higgs and Sabin (2005), Nvu™ seemed to hold the most promise. It is based on the Mozilla Composer™ technology, with some considerable usability improvements. Unfortunately, work on Nvu came to a halt in 2006; Nvu 1.0 is the only version available. A community-driven project, Kompozer™ (2012), took responsibility for maintaining the Nvu codebase and fixing bugs until a successor to Nvu is released. Another alternative available now is SeaMonkey™ (2012), which is also based on the Mozilla Composer technology. Our experience with SeaMonkey leads us to the conclusion that it is simple to use for creating a small number of Web pages, but not for Web sites of larger size. It also does not seem to be particularly up to date with respect to the latest Web standards. The latest update apparently fixes some security issues and bugs, but adds no additional functionality. On the Ubuntu (Linux) platform, Quanta Plus™ (2012) could be an appropriate alternative.
JavaScript, while an essential part of Web Authoring, does not fare well with programming language support. Since JavaScript programs typically execute within the confines of a Web browser, the user experience is typically not good. The example of successful implementation of JavaScript could be found in “Personal Encrypted Talk” (Snogles, 2005) that describes a system for securing instant messaging with a Java application.
CSS Editing
• • •
Cascading Style Sheets (CSS) use simple language syntax, but a complex set of rules about what is valid CSS and what is not. One can use a plain
Multiple Browser Experience Any Web Authoring course worth its salt needs to address the fact that Web sites must work across multiple Web browser platforms (Riabov & Higgs, 2010a). Web browsers are notoriously incompatible, and things are made worse by the fact that the leading Web browser, Microsoft Internet Explorer™ (currently at version 8) is the least compatible of all the major Web browsers. Students will need to be able to develop Web sites and test them against at least the following modern browsers: •
•
Microsoft Internet Explorer v.8 (Internet Explorer v.7 is still very common) Mozilla Firefox™ (2012) Opera™ Web Browser (2012) Apple’s Safari™ Browser (also available on Windows) (2012) Google’s Chrome™ Browser (2012)
153
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
•
Linux systems also have additional, lesserknown browsers.
Alternatives to [X]HTML/CSS/JavaScript Constructed Web Sites
Students studying the Web authoring should be exposed to as many of these browsers as possible, and encouraged to test their work with as many of them as possible.
An interesting idea to ponder is this: which students absolutely need to learn how to construct a Web site using the basic languages ([X]HTML, CSS, and JavaScript), and which would do fine with Web-based construction tools, such as Google™ Sites (2012), Blogs (Blogger, 2012; WordPress, 2012), Wikis (PBWiki, 2012) or some other Web-based technology? While it is reasonable to assume that most CS/CIS/IT majors will need to learn the nuts and bolts that underlie these tools, others probably may never need more than what those Web-based technologies provide.
Browser-specific Tools/Environments Once JavaScript is introduced into a Web site, the need to be able to debug JavaScript code becomes paramount. Unfortunately, the situation is complicated, because different browsers have different JavaScript engines with varying compatibilities. Opera Web Browser (2012) comes with its own, very useful, debugging environment. Mozilla Firefox (2012) has the Firebug plug-in (2012), and Web Developer Toolbar (2012). Microsoft Internet Explorer provides the Microsoft Script Editor™ (2012), and the Fiddler Web Debugger™ (2012). Web Development IDEs The latest crop of production quality IDEs (NetBeans, Eclipse, etc.) typically provide rich support for [X]HTML, CSS, and JavaScript. However, they tend to be very text/language focused, rather than task-focused (at least for inexperienced students), which can result in a rather complex experience. In a production environment, such IDEs make a lot of sense – they typically support more sophisticated Web environments such as Java Server Pages, ASP.Net, PHP, or similar technologies, and provide significant additional ‘intellectual leverage’ and enhanced productivity. However, this may not be appropriate for an academic environment in terms of student learning, except at the more advanced levels of academic achievement.
154
Other Utilities There are a number of FTP utilities available that allow uploading of Web page source files to a suitable Web hosting site. Many of the abovementioned integrated tools provide support for FTP (and other uploading mechanisms). However, sometimes a good standalone FTP client is desirable, or even necessary. One such client on Windows is WinSCP™ (2012). Others are available for Windows, Linux, and other systems.
Web Server Selection Apache™ HTTP Server (2012) has been used as the Open Source replacement of Microsoft Internet Information Services (IIS) server. Currently, the Apache HTTP Server is the most popular web server, is very well documented, and easily administered (Higgs & Sabin, 2005).
Web Server Support One additional advantage that Microsoft FrontPage has is the existence of FrontPage Server Extensions that “support features such as hit counters, data collection, e-mail processing, and
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
database processing” (About FrontPage Server Extensions, 2012). The automatic navigation updates and the easy configuration and modification of the overall navigation scheme of the web site are among other important features found by Higgs and Sabin (2005). The equivalent functionality of these extensions could be implemented through scripting support on the web server. The Open Source options include the Common Gateway Interface (CGI) (2012), Perl (2012), and some other languages, such as PHP (2012), Java Server Pages, and/or Java Servlets (2012). The CGI is built into the Apache™ Web Server. Other options require that the functionality will be added to a related web server. For example, for PHP, this is the Apache PHP plug-in. In the case of Java Server Pages/Java Servlets, Apache Tomcat™ is the most obvious choice for a Java Enterprise Container™ (Higgs & Sabin, 2005). In addition, the necessary code must be created to substitute for the Microsoft FrontPage™ Server Extensions, in particular, to provide means for good navigation support.
Database Development and Management Microsoft Access™ is usually used as a standalone platform in introductory courses on database management. This platform includes two major components: Database Engine and Graphical User Interface (GUI). However, the use of Microsoft Access can be problematic when trying to learn about databases, as opposed to focusing on useroriented database interfaces. In modern applications, database management systems (DBMSs) and their management become important, and a proper platform (i.e., Oracle™ database (2012), Microsoft SQLServer™, PostgreSQL™ (2012), etc.) should be selected. The choices among the free-license Open Source databases are limited.
Database Engine There are a few high-quality free-license databases, including MySQL™ (2012), PostgreSQL™ (2012), Apache Derby™ (Cloudscape™) (2012), TinySQL™ (2012), Hypersonic™ SQL (HSQLDB, 2012), Firebird™ (2012), and Mckoi™ SQL Database (2012). MySQL™ is the most popular Open Source database, it runs on many platforms, and it is well documented, with a number of good books describing it. It is also relatively simple to administer (Higgs & Sabin, 2005). PostgreSQL™ is a well-respected and popular database system that was developed on UNIX systems. Recently, a Windows version has been made available (PostgreSQL, 2012). Apache™ Derby’s history is associated with Informix™. After the acquisition of InformixTM by IBM™, IBM™ officially open-sourced what was then known as Cloudscape™ and contributed the product to the Apache Software Foundation, where it is now an ‘incubator’ project (Higgs & Sabin, 2005). TinySQL™, Hypersonic SQL™, Firebird™, and Mckoi™ SQL Database are open source databases with smaller user bases.
Database GUI Unlike Microsoft™ database products, most of the Open Source database engines do not include a GUI interface (Higgs & Sabin, 2005). Such interfaces are usually supplied separately, often by third parties. One example of this is that GUI-based interfaces for MySQL are available separately. Java-based GUIs supporting the JDBC interface are particularly prevalent, given the ability of Java to provide platform-independent database and GUI interfaces (Riabov & Higgs, 2010a). There are a few examples (Higgs & Sabin, 2005) of the Open Source database GUIs:
155
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Eclipse™ (2012) with the SQLExplorer™ Plugin (2012), iSQL-Viewer™ (2012), SQuirreL™ SQL Client (2012), QueryForm™ Database Tool (2012), and FreeQueryBuilder™ (2012). All of the above database GUIs are written in Java. Probably any of these products would be satisfactory. None of them stands out significantly over the others in any obvious way, although platforms such as NetBeans have been making great progress regarding GUI support for databases – to the point that they may be the preferred GUI-based development interface to any and all of these databases. Higgs and Sabin (2005) have commented that the use of Eclipse™ with SQL Explorer Plug-in would be attractive for students with a reasonable programming background, although NetBeans is definitely in the game. Another option is to use phpMyAdmin™ (2012), which is a free software tool written in PHP and intended to handle the administration of MySQL (2012) over the World Wide Web. The most frequently used operations are supported by the user interface (managing databases, tables, fields, relations, indexes, users, permissions, etc), while a user still has the ability to directly execute any SQL statement (phpMyAdmin, 2012).
EXAMPLES OF ONLINE COURSE STRUCTURES Running a Computer Security Course An online course on computer security is offered as an introduction to the methods, algorithms, and tools of computer-system security (Riabov & Higgs, 2010ab; 2011). Topics cover both the theoretical and practical aspects of security including cryptography, protocols, standards, and security implementation. An important part of the course is surveys of actual techniques used by hackers to attack systems.
156
The author’s website is the gateway to the course, publications, and numerous resources on the Internet (through the World Wide Web, Secure Shell, and Secure FTP). The course has a Blackboard portal to syllabus, assignments, lecture slides and notes, tools, software installation instructions, tutorials, lab manuals, examples of project papers, research reports, Internet links, lists of recommended readings, etc. The online course covers: security concepts; history of cryptography; theory of sets, permutations, combinations, and probability; number theory and modular arithmetic; classical cryptosystems; symmetric block ciphers; public key cryptography; overview of message authentication codes, hashes, and message digests; principles of authentication; Web security and privacy for users; tunneling and virtual private networks (VPNs); and malware. Using Blackboard™ Discussion Board and LearnLinc™ live chat room, the instructor discusses with students secure ways of sharing the network resources, issues of confidentiality, medical and personal information security on the Internet, and protection from electronic spam. This course also introduces encryption algorithms such as the RSA Public-Key encryption algorithm (Rivest et al., 1978). A student can try to solve problems by simple experimentation with the Java Applets tools (Riabov & Higgs, 2011) especially designed for this course. Students use the tool to create and decipher simple shift substitution ciphertexts, MonoAlphabetic substitution cipher, the Playfair and Vigenère ciphers, as well as to explore modular arithmetic and message digests. The tool also is used in reviewing the concepts of probabilities and combinatorics. The course assignments include three homeworks, one virtual lab, final exam, and a project paper that covers in depth one of the computer security technologies. Every class starts with a brief online discussion of a topic that is related to the homework exercises. After this “warm-up”
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
introduction (Riabov, 2006a), the instructor offers a lecture on the main topic and asks students for a feedback (via Blackboard, LearnLinc, or e-mail) on lecture materials and their arguments for selecting a competitive strategy for the problem analysis and development. These online discussions help students focus on the main point of the online class session. After cracking a couple of simple short ciphers, students are asked to explore how cryptographers might actually crack classic ciphers. The students are encouraged to use various components of Java applets (Riabov & Higgs, 2010ab; 2011) while working on this assignment. They start by exploring a MonoAlphabetic Substitution Cipher (e.g., the oldest Caesar cipher) (Kaufman et al., 2002) that maps individual plaintext letters to individual ciphertext letters, in a 1-to-1 manner. To encipher a message, students simply take each letter in the plaintext, find that letter in the Plaintext row, and substitute the corresponding letter immediately below it, in the Ciphertext row. Finally, students examine the Letter Frequency Analysis approach based on assumptions that the plaintext consists of characters written in some natural language (e.g., English), and that the frequency of letters in a typical piece of text in that language is known. After the concept review and exploration with the Java Applets tool, students are asked to study two ciphertexts: Ciphertext-1 (3 pages, 620 words, 2,685 characters, and 128 lines), where the original word spacing, punctuation, and style have been retained; and Ciphertext-2 (46 pages, 25,955 words, 103,818 characters, and 2,596 lines), where word spacing and punctuation have removed and the text has been organized in groups of four letters.Ciphertext-2 is a more challenging problem than Ciphertext-1 since it lacks the context clues such as word spacing and punctuation provide. Usually it takes more than 6 hours for a student to decipher these ciphertexts, using a variety of techniques and tools (e.g., one student wrote custom UNIX scripts and a standard
UNIX dictionary to help with the mechanics of the solution). The last assignment gives students an opportunity to review the theory of probabilities that plays an important part in many areas of security. In an attempt to overcome the all too common “Mathphobia” of students, some standard statistical/ probability problems were re-cast using scenarios that were more “security-related”, e.g., “CIA Hiring”; “Brobdingnag Battles”; “Delta Force”; and “Ethnic Dispute” (Riabov & Higgs, 2011). Several online classes were designed as computer virtual labs to help students in exploring the network-security case studies and finding ways of solving them. The OPNET IT Guru™ Academic software package (2012) was used for studying firewalls and virtual private networks. Using this knowledge and skills, students develop their own lab projects and include virtual lab techniques in their research projects involving various network security protocols, such as the Diffie-Hellman asymmetric key agreement protocol (Snogles, 2005) and RADIUS protocol (Szilagyi et al., 2009). Students are encouraged to conduct research and write project papers on modern computersecurity technologies. They select projects that would be beneficial for their careers and valuable for companies and the community. Usually, students demonstrate their project portfolios during job interviews. Such demonstration of their actual professional skills in computer security helps students in finding a job immediately after the graduation. Many projects are implemented in local companies and the community: e.g., “Secure Wi-Fi Technologies for Enterprise LAN Network”, “Steganography and Steganalysis”, “Intrusion Prevention System”, “Security and SQL Injections”, “Virtual Private Networks”, “Firewalls Overview”, “RADIUS Protocol”, and “Secured Communication in Java”. Students are encouraged to submit summaries of their research projects to conferences and journals, including Rivier Academic Journal (2012).
157
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Offering the Advanced Case Studies for Numerical Analysis A course on Numerical Methods typically covers introductory topics in numerical analysis for students of engineering, science, mathematics, and computer science who have completed elementary calculus, linear algebra and matrix theory. The course is usually limited to exploring basic algorithms for solving traditional simple problems in sciences and engineering (Ascher & Greif, 2011). As a result, the students have become inadequately prepared to construct and explore more sophisticated algorithms. To reduce this gap, the author has offered a series of case studies (Riabov 2012a), which provide concrete examples of the ways numerical methods lead to solutions of some scientific problems. A similar approach was promoted in (Dahlquist & Bjrck, 2008). Various problems of applied mathematics, thermophysics, and aerodynamics (e.g., stability of mechanical systems and flow boundary layers, fuel combustion, and heat protection of space probes) required to solving differential equations with small coefficients at the highest derivatives. This phenomenon leads to the formation of regions with small linear dimensions where gradients of functions are large. The numerical analysis of such problems by traditional box-schemes is complicated by non-uniform convergence or even divergence of numerical solutions. In this case study, the numerical solutions of the model singular ordinary differential equation were evaluated for the linear boundary value problem. A numerical method (Riabov, 2003) was demonstrated for analysis of gas flow parameters in boundary and viscous shock layers under the conditions of a gas blowing on the body surface and non-equilibrium chemical reactions. From a mathematical point of view, the increase of the flow rate of blowing gas or chemicalreaction rates is equivalent to the existence of a small coefficient at the highest derivative in the boundary-layer equations. A sublayer (of uncertain location) with large gradients of functions is 158
created. The gas flow in the boundary layer was studied using a two-point exponential box-scheme and an effective regularization algorithm (Riabov, 2003). A uniform second-order convergence was obtained for functions and derivatives for the full range of small parameters such as blowing factors and inverse chemical-reaction rates. The approach could be applied to boundary layers with gas injection and combustion. Many technological problems (e.g., calculations of transport coefficients and chemicalreaction rates) require estimations of multi-fold integrals under conditions in which classical Newton-Cotes formulas for numerical integration could not be applied. In the second case, students studied the rotational relaxation of a gas of homonuclear diatomic molecules. Realistic models of the intermolecular interaction (Riabov, 2000c) were used for calculating the redistribution of the rotational and translational energies upon collision. In one of the student projects, to estimate the rotational relaxation time, sixfold integrals were calculated at 200 points over the range of temperatures from 200 K to 10,000 K, using the Monte Carlo simulation technique, with 4000 tests at each point. The data for intermediate points were determined by means of the interpolation technique using cubic splines of defect 1 with smoothing. The accuracy of the calculations was estimated as 1.5%. The experimental data for molecular nitrogen correlates well with the numerical results. FORTRAN code was developed for calculations. The purpose of the third case study was to analyze heat transfer processes of the catalytic materials of the shock-tube end after shock wave refraction in terms of the model of the non-steadystate non-equilibrium thermal boundary layer (Riabov, 2009). The major challenge was to develop an algorithm (and implement it in FORTRAN) that could correctly and uniformly calculate flow parameters under all possible states (chemically “frozen”, non-equilibrium, and equilibrium ones) right behind the moving reflected shock wave. The types of governing differential equations are
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
significantly different in these three cases, and the algorithm should automatically “adapt” to these changes across the flow. In this student project, the system of algebraicdifferential equations (Riabov, 2009) was solved at each point of the flow field behind the incident and reflected shock waves. A modified Newton’s method with optimal choice of iteration step (Riabov, 2009) was used for numerical solution of the equations. In the case of the initial pressure pl = 100 Pa, the flow behind the reflected wave is close to a state of local thermodynamic equilibrium, while in the other case pl = 1 Pa, the flow is significantly in non-equilibrium. The data were used as external boundary conditions for the flow parameters in the thermal viscous layer under the considered conditions. The special topics covered mathematical foundations of the evolution of dynamic systems that could be described in terms of attractors. Case studies of numerical modeling of chaotic dynamical systems (turbulence, weather forecast, and economic system development) (Lorenz, 1995) also became a part of the course. They were introduced through classical examples of bifurcations of systems modeling equilibrium in chemical reactions (Rössler attractor) and atmospheric dynamics (Lorenz attractor). After brief online discussions of the study case s, each student worked on a selected case as a project: creating computer codes (in FORTRAN or using MATLAB tools) to implement a solution, running the programs with various parameters, comparing the results with experimental data, and presenting his/her findings to classmates via the Blackboard site. In course evaluations, students stated that they became deeply engaged in the online course activities because they were examining challenging problems.
Methodologies and Tools for the Software Quality Assurance Course Students pursuing careers in software development should be familiar with various methods of soft-
ware quality assurance (SQA). Three years ago we launched a new SQA online course (Riabov, 2011) that addresses the issue of quality throughout the software development process, including system analysis and design, rapid prototyping, implementation, testing, and delivery. Special attention is given to setting quality standards (Galin, 2004), developing quality measurement techniques, writing test plans, and testing the user interfaces. It becomes a challenge for an “online” instructor to provide students with the state-of-the-art hands-on technology-exploration experience in this field. Topics covered include the integration of quality activities into the software project life cycle, CASE tools overview, structured testing methodology, complexity and object-oriented metrics, configuration management, capability maturity models, software engineering practices and standards, code re-engineering strategies, and miscellaneous topics. Students were encouraged to examine various software-development projects. Exploring different testing strategies, they analyzed computer codes by using various software-organization metrics including cyclomatic complexity (Watson & McCabe, 1996), Halstead’s (1977) and object-oriented metrics (Rosenberg & Hyatt, 1998), and re-designed the code with lower risk level and errors. This section contains an overview of the onlineavailable SQA software tools, tutorials, virtual lab manuals, homework assignments, project reports, and research papers of students who took the Software Quality Assurance online course.
Industrial SQA Tool Used in Software Engineering and Quality Assurance One of the most popular SQA tools, the McCabe™ IQ software package (2012), was selected for exploring various case studies and projects in the course on software quality assurance. This industrial tool became available for students under the free-license agreement with the McCabe™ University Program. The tool allows them to ex159
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
plore McCabe’s structured testing methodology (Watson & McCabe, 1996), a widely used method in code analyses, unit and integration test planning, and test-coverage estimations. Following specially designed virtual lab assignments using the McCabe™ IQ tool (the free-trial version), students study how to apply the theory of graphs for code complexity analysis, develop test strategies, and predict possible errors (Halstead, 1977; Riabov, 2005a) in code developed by themselves and code samples from companies. Unfortunately, the McCabe™ IQ package could be used only on campus and the free trial version is limited to a 30 day period of use; therefore, other Open Source free-license SQA packages were evaluated for use by students at home, specifically for taking courses online or in the hybrid format.
Open Source Free-License SQA Tools There are several Open Source free-license SQA tools available for students. The Java Source Metric™ package (2009) is used to analyze Java source code with quality metrics like the Inheritance Depth, Lines of Code, and McCabe Complexity Metric suite. The CCCC™ tool (Littlefair, 1998) generates a report on various metrics (including the Lines of Code and McCabe’s complexity) of C/C++ code. The freeware program SourceMonitor™ (2012) is used for code analysis to identify the relative complexity of code modules. SourceMonitor™ measures metrics for source code written in C++, C, C#, VB.NET, Java, Delphi, Visual Basic (VB6), and HTML. It operates within a standard Windows GUI and exports metrics to XML or CSV (comma-separated-value) files for further processing with other tools. The COCOMO-II™ tool (2012) is used by students to estimate the cost, efforts, and schedule associated with their software development projects.
160
SQA Virtual Lab and Homework Assignments The main goal of virtual labs and homework assignments is to introduce software quality metrics and help students build their individual skills of code analysis, testing, and redesign to improve code quality and enable possible reuse in other projects. Introducing the Structural Testing Methodology The first set of virtual lab and homework assignments deals with implementation of the structured testing methodology offered by McCabe (Watson & McCabe, 1996). The approach is based on graphtheoretical complexity-measuring techniques in code studies and control of program complexity. Using the experimental results of Miller (1956), McCabe suggests that code modules approach zero defects when the module cyclomatic complexity is less than 10. During online lectures, the instructor provided an overview of the graph-based complexity metrics and the results of his systematic metric analyses of software for two industrial networking projects (Riabov, 2005a). Following the virtual lab assignments, students explored the McCabe ™ IQ tool and used it to perform metric analyses of several codes by applying cyclomatic complexity (v), essential complexity (ev), module design complexity, system design complexity, and system integration complexity metrics (Watson & McCabe, 1996) in order to understand the level of complexity of a code module’s decision logic, the code’s unstructured constructs, a module’s design structure, and the amount of interaction between modules in a program, as well as to estimate the number of unit and integration tests necessary to guard against errors.
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Divisor. They also found that large C/C++ source files (Riabov, 2005a) contain more actual errors than the number of delivered bugs (B) suggested (Halstead, 1977).
Estimating the Number of Code Errors and Efforts to Fix the Errors The second group of the virtual lab and homework assignments was designed to introduce students to the comparative analyses of algorithm implementations in different languages (FORTRAN, C, C++, Java and some others). Following Halstead’s procedures (Halstead, 1977), students identified all operators and operands, their frequencies, and estimated the program length, vocabulary size, volume, difficulty and program levels, the effort and time amounts to implement and understand the program, and the number of delivered bugs (possible errors), B. They compared their findings with values calculated by using SQA tools (McCabe™ IQ, Java Source Metric™, CCCC™, SourceMonitor™, and COCOMO-II™), and found that the results are sensitive to the programming language type (procedural or object-oriented). In particular, students found that efforts to implement and understand the program were higher for procedural languages (FORTRAN and C) than for the object-oriented language (Java), even for simple algorithms, like Euclid’s algorithm for calculating the Greatest Common
Interpreting Object-Oriented Metrics The third group of the virtual lab and homework assignments was developed to help students identify clusters of object-oriented metrics that would better describe the major characteristics of object-oriented systems (properties of classes, polymorphism, encapsulation, inheritance, coupling, and cohesion) implemented in computer code written in C++ and Java. Their findings are summarized in Table 2 below. Students also identified some specific objectoriented metrics (Weighted Methods per Class, Response from a Class, Lack of Cohesion between Methods, and Coupling between Objects) that are the important factors for making a decision about the code module/class re-usability.
Table 2. Clusters of Object-Oriented Metrics Metric
Class
Polymorphism
Weighted Methods Per Class
Yes
Yes
Response For Class
Yes
Yes
Encapsulation
Percentage of Public Data
Yes
Accesses to Public Data
Yes
Lack of Cohesion of Methods
Yes
Inheritance
Yes Yes
Number of Parents
Yes
Depth in Inheritance Tree
Yes
Coupling Between Objects
Yes Yes
Method Hiding Factor
Yes
Polymorphism Factor
Yes
Cohesion
Yes
Number of Children
Attribute Hiding Factor
Coupling
Yes
Yes Yes Yes
161
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Comparing Two Releases of the Code The fourth, and last, set of the virtual lab and homework assignments assigned to students was to identify major factors that forced programmers to change code (Riabov, 2005a) in the project redesign efforts. After analysis of the project software (about 300,000 lines of C-code) using the network-protocol approach 271 modules of the old Code Release 1.2 (Riabov, 2005a) were recommended for redesign. The re-engineering efforts resulted in the deletion of 16 old modules and in the addition of 7 new modules for the new Code Release 1.3. Analyzing the deleted modules, students found that 7 deleted modules were unreliable (v > 10) and 6 deleted modules were unmaintainable (ev > 4). Also, 19% of the deleted code was both unreliable and unmaintainable. Moreover, all new modules were reliable and maintainable. After redesign, code changes resulted in the reduction of the code cyclomatic complexity by 115 units. 70 old modules (41% of the code) were improved, and only 12 modules (about 7% of the code) deteriorated. This analysis demonstrates a robustness of the structured testing methodology and successful efforts in improving the quality of the Code Releases. Studying the relationship between software defect corrections (Riabov, 2005a) and cyclomatic complexity, students found a positive correlation between the numbers of possible errors, unreliable functions (with v > 10), and error submissions from the Code Releases in the implementation efforts for six network protocols (BGP, FR, IP, ISIS, OSPF, and RIP). Students’ Projects and Research Studies on SQA As the main assignment for the SQA online course, students were asked to develop their individual or team projects on the quality analysis of moderate-size computer programs written in an object-oriented language (C++ or Java)
162
and compare different releases of the code. The project assignment included the study of the code complexity and quality based on the analysis of cyclomatic complexity metrics, Halstead’s metrics, and object-oriented design metrics by using available SQA tools (McCabe™ IQ, Java Source Metric™, CCCC™, SourceMonitor™, and COCOMO-II™). The project reports included the code structure chart, “Battlemap”; McCabe’s Complexity Metrics summary; examples of flowgraphs with low, moderate, and high complexity; scatter diagrams with identification of unstructured-unreliable, reliable-structured, unreliablestructured, and reliable-unstructured modules; examples of flow-graphs with the independent paths for the unit tests; Halstead’s Metrics report with estimation of the total number of the delivered errors (B); Object-Oriented Metrics report with basic interpretation of the metrics; and recommendations to improve the code. One of the graduate students analyzed the complexity of the Light-Up Puzzle program (2012), its maintainability, testability and metrics related to the quality of the software program’s design. The application’s vulnerabilities were identified by using the McCabe™ IQ tool. This approach helped him to identify vulnerable code areas, reduce error rates, shorten testing cycles, improve maintainability, and maximize reusability. In order to verify the effectiveness of the McCabe™ IQ tool, he re-factored the program in the areas reported to be highly complex and error-prone. After this, he compared the McCabe’s Metrics reports on the initial analysis to the reports on the re-factored analysis and charted results to clearly indicate the improvements made to decrease complexity. In addition to the McCabe metrics, the student also added various UML diagrams (Galin, 2004), which helped him understand the concept of the program structure and identify areas where object-oriented design principles could be applied to increase code reusability and maintainability (Selent, 2011).
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Effectiveness of the SQA Online Course and Students’ Response All 16 computer-science graduate students that took the SQA course online in the spring of 2010 expressed in their course evaluations full satisfaction with course organization, content, and material delivery. The overall course-evaluation score was high (4.71 out of maximum possible 5.0). In their anonymous comments, students shared mostly favorable observations, e.g., “This is a practically-oriented course and it has a lot of demand in the job market…“; “The instructor opened my eyes to the importance and usefulness of SQA metrics…”; “I learnt a lot of how the SQA is handled in the software development process…”; “Great experience…”, and “I met my expectations more than I thought.” Later these students effectively used the SQA techniques to improve their software programs in other online courses, including the capstone projects. All the students are currently employed by local computer companies.
STUDENTS’ ELECTRONIC PORTFOLIOS AND OVERVIEW PAPERS In many classes (e.g., CS553 Networking Technologies, CS578 Advanced Networks, CS572 Computer Security, CS690 System Simulation & Modeling, and CS699 Professional Seminar in Computer Science), the instructor encourages students to conduct research and write project papers on modern computing technologies. The assigned individual projects include all the components of feasibility study, analysis, synthesis, architectural design, application, and evaluation of selected computer systems. The students are motivated to select topics for projects that would be valuable for companies and the community. Usually, they demonstrate their project Web-based portfolios
during job interviews. Such demonstration of their professional skills helps students in finding a job immediately after the graduation. Many students’ projects are implemented in local companies and the community (Riabov, 2006a). All graduate students deliver their presentations of individual and team projects online (via Blackboard™) or in the classroom and seminars (Riabov, 2005c; 2005d). The instructor helps them in organizing the presentations. Working on the individual projects in the CS553 Networking Technologies and CS578 Advanced Networks classes, students search for information on modern networking technologies from the prime sources, such as the Request-ForComments organization (2012), a repository of the standards in networking industry; IETF Secretariat (2012); WiFi™ Alliance (2012), an association that promotes secure solutions for wireless networking technologies; and Fibre Channel Industry Association (2012), an international organization of manufacturers, developers, and end users of the Storage Area Networks. Many graduate students, who are employed by local networking, computer and IT companies, select topics for individual projects that are based on their experience with the company. The computer systems developed by the students under the instructor’s supervision are tested in the company’s environment and receive a great support from their supervisors (Milkovits, 2005). This fact helps the students in their job promotion.
“Extra Miles”: Students’ Research Studies The author’s articles and papers (Riabov, 2000a; 2000b; 2002a; 2002b; 2003; 2004; 2005a; 2005b; 2006b; 2012b; Sabin, et al., 2005; Riabov & Higgs, 2010ab) have a focus on the interdisciplinary aspects of teaching Computer Science classes and designing modern computing systems. The research in these publications includes both
163
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
disciplinary and interdisciplinary perspectives that challenge the instructor to take a personal responsibility in teaching students according to their different backgrounds in Mathematics, Computer Science, Natural Sciences, and culture. The author supports graduate students in their efforts of introducing Computer System Analysis and Design Standards (Watson & McCabe, 1996) to the networking industry, related software tools (Using McCabe QA, 1999), and practices (Riabov, 2005a; Coombs & Coombs, 1998) in the local networking companies. The students are encouraged to submit summaries of their research projects to conferences and journals (Milkovits, 2005; Selent, 2011). Thirteen graduates have published their research reports in the Rivier Academic Journal (2012). These activities develop a strong bond between students and faculty members that will last forever.
FUTURE RESEARCH DIRECTIONS In this chapter, the author described his experience running some online computer-science courses that require an intensive technology-exploration experience for students. The development of the Computer Science curriculum that is offered totally online is still a difficult task. The variety of state-of-the-art free-license software tools available for instructors and students is increasing and overlapping. This fact requires a thorough selection of the tools for online instruction. Many free-license software tools are still in the development stage and are not accompanied by complete user’s manuals and case studies that could be transformed into the virtual lab manuals. Some of the free-license software tools are not used in the industry. This fact could be a significant challenge for colleges that could not afford purchases of professional software editions. These challenges could be addressed in the future studies.
164
CONCLUSION The author has described the challenges and experience of running several online computer science courses for graduate students. His experience in selecting free-license software tools has been in general a very positive one, while at the same time providing useful lessons learned. The author believes that the virtual-lab and online project-based approach can be effectively applied to future online courses of a similar nature in academia, and he believes that the model can be extended to other engineering disciplines beyond the computing science. The knowledge of graph theory and its applications in software engineering is beneficial for students with Computer Science majors. Code revision allows students to find those code areas with potential errors and to improve code design and testing practices. In particular, software quality assurance analysis can be used in identifying error-prone code, measuring optimum testing efforts, predicting the effort required to maintain the code and break it into separate modules, reallocating possibly redundant code, and providing a fundamental basis for unit and integration testing. Code complexity analysis and structured testing methodology should become a necessary part of software design, implementation, testing, sustaining, and re-engineering practice and training. In his experience running online and hybrid courses, the author has found that the use of synchronous web conferencing tools (in addition to traditional Blackboard™ course tools) helped students in effectively seeking instructor’s assistance, timemanagement of tasks, and exercising problem solving skills.
ACKNOWLEDGMENT The author would like to acknowledge his colleagues (Dr. Mihaela Sabin, Dr. Bryan Higgs, Dr.
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Richard Greene, and Dr. David Pitts), who have played a direct and crucial role in developing the Computer Science curriculum and transforming traditional face-to-face courses into hybrid and online versions.
REFERENCES About FrontPage Server Extensions from Microsoft. (2012). Retrieved May 21, 2012, from http://office.microsoft.com/enus/assistance/ HP011032361033.aspx Apache Derby Project. (2012). Retrieved May 21, 2012, from http://incubator.apache.org/derby/ Apache HTTP Server Project. (2012). Retrieved May 21, 2012, from http://httpd.apache.org/ Apple Safari. (2012). Retrieved May 21, 2012, from http://www.apple.com/safari/ ArgoUML v.0.34. (2012). Open source software engineering tools. Tigris, Inc. Retrieved May 21, 2012, from http://argouml.tigris.org/ Ascher, U. M., & Greif, C. (2011). A first course in numerical methods (computational science and engineering). Philadelphia, PA: Society for Industrial and Applied Mathematics. doi:10.1137/1.9780898719987. Barnes, D. J., & Kölling, M. (2004). Objects first with java: A practical introduction using BlueJ (2nd ed.). Upper Saddle River, NJ: Prentice Hall. Blogger. (2012). Retrieved May 21, 2012, from https://www.blogger.com/start Blue, J. (2012). BlueJ – Teaching Java – Learning Java. Retrieved May 21, 2012, from http:// www.bluej.org/ Bollag, B. (2004, November 19). Enrollment of foreign students drops in US. The Chronicle of Higher Education.
Borland JBuilder. (2012). Retrieved May 21, 2012, from http://www.codegear.com/products/jbuilder Brookshear, J. G. (2009). Computer-science: An overview (10th ed.). Reading, MA: AddisonWesley. Brown, K., & Christianson, L. (2005). OPNET lab manual to accompany data and computer communications (7th ed.). Upper Saddle River, NJ: Pearson Prentice Hall. CDT Plugin for Eclipse. (2012). Retrieved May 21, 2012, from http://www.eclipse.org/cdt/ COCOMO II. (2010). University of South California. Retrieved May 21, 2012, from http:// sunset.usc.edu/csse/research/COCOMOII/cocomo_main.html Code:Blocks. (2009). Retrieved May 21, 2012, from http://www.codeblocks.org/ Coombs, C. Jr, & Coombs, C. A. (1998). Communications network test & measurement handbook. New York, NY: McGraw-Hill. Cooper, K. (2006). Riveir University launches online programs. Rivier Academic Journal, 2(2). Retrieved May 21, 2012, from http://www.rivier. edu/journal/RCOAJ-Fall-2006_table.htm Crimson Editor. (2012). Retrieved May 21, 2012, from http://www.crimsoneditor.com/ Dahlquist, G., & Bjrck, A. (2008). Numerical methods in scientific computing, 1. Philadelphia, PA: Society for Industrial and Applied Mathematics. doi:10.1137/1.9780898717785. Dale, N. (2003). C++ plus data structures (3rd ed.). Boston, MA: Jones and Bartlett Publishers. Dennis, A., Wixom, B. H., & Tegarden, D. (2009). System analysis & design, UML version 2.0: An object-oriented approach (3rd ed.). Hoboken, NJ: John Wiley & Sons, Inc..
165
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Dev C++. (2012). Retrieved May 21, 2012, from http://www.bloodshed.net/devcpp.html Dion, J. (2006). Musician web-service using ruby-on-rails, SOAP, FLEX, and AJAX. Rivier Academic Journal, 2(2). Retrieved May 21, 2012, from http://www.rivier.edu/journal/RCOAJFall-2006_table.htm Eclipse. (2012). Retrieved May 21, 2012, from http://www.eclipse.org/ Fibre Channel Industry Association. (2012). Retrieved May 21, 2012, from http://www.fibrechannel.org/ Fiddler Web Debugger. (2012). Retrieved May 21, 2012, from http://www.fiddlertool.com/fiddler/ Firebird. (2012). Retrieved May 21, 2012, from http://firebird.sourceforge.net/ Firebug. (2012). Retrieved May 21, 2012, from http://getfirebug.com/ Flanagan, D. (2005). Java in a nutshell (5th ed.). New York, NY: O’Reilly & Associates. FreeQueryBuilder. (2012). Retrieved May 21, 2012, from http://sourceforge.net/projects/querybuilder/ Galin, D. (2004). Software quality assurance: From theory to implementation. New York, NY: Pearson Education. GNU C++ (GCC). (2012). Retrieved May 21, 2012, from http://gcc.gnu.org/ GNU emacs. (2012). Retrieved May 21, 2012, from http://www.gnu.org/software/emacs/emacs.html Google Chrome. (2012). Retrieved May 21, 2012, from http://www.google.com/chrome Google Sites. (2012). Retrieved May 21, 2012, from http://sites.google.com/
166
Guzdial, M. (2005). Introduction to computing and programming in python: A multimedia approach. Upper Saddle River, NJ: Prentice Hall. Halstead, M. H. (1977). Elements of software science. New York, NY: North Holland. Higgs, B., & Sabin, M. (2005, October 20-22). Towards using online portfolios in computing courses. In Proceedings of the 6th ACM SIG — Information Technology Education Conference (SIGITE 2005), Newark, NJ (pp. 323-328). Hnatyshin, V. Y., & Lobo, A. F. (2008). Undergraduate data communications and networking projects using OPNET and wireshark software. ACM SIGCSE Bulletin, 40(1), 241–245. doi:10.1145/1352322.1352222. Horstmann, C. S., & Cornell, G. (2007). Core java: Vol. I. Fundamentals (8th ed.). Upper Saddle River, NJ: Prentice-Hall. HSQLDB. (2012). Retrieved May 21, 2012, from http://hsqldb.org/ IETF Secretariat. (2012). Retrieved May 21, 2012, from http://www.ietf.org/rfc.html iLinc Communications, Inc. (2012). LearnLinc tool panel overview. Retrieved May 21, 2012, from http://www.ilinc.com/pdf/trc/ilinc-learnlinctool-panel.pdf iSQL-Viewer. (2012). Retrieved May 21, 2012, from http://www.isqlviewer.com/ IT Guru Academic Ed. OPNET Technologies. (2012). Retrieved May 21, 2012, from http:// www.opnet.com/university_program/itguru_academic_edition/ Java Source Metric. (2012). SourceForge.Net. Retrieved May 21, 2012, from http://jsourcemetric. sourceforge.net/ JEdit Programmer’s Text Editor. (2012). Retrieved May 21, 2012, from http://www.jedit.org/
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Jython. (2012). Retrieved May 21, 2012, from http://www.jython.org/ Jython Environment for Students (JES). (2012). Retrieved May 21, 2012, from http://coweb. cc.gatech.edu/mediaComp-plan/MediacompSoftware Kaufman, C., Perlman, R., & Speciner, M. (2002). Network security: Private communication in a public world (2nd ed.). Upper Saddle River, NJ: Prentice Hall. KDevelop: KDE Development Environment. (2012). Retrieved May 21, 2012, from http:// www.kdevelop.org/
McCormack, E. (2005, November 11). Total graduate enrollments rise: Number of foreign students drops. In The Chronicle of Higher Education. Mckoi Database. (2012). Retrieved May 21, 2012, from http://www.mckoi.com/database/ Microsoft Inc. (2012a). Microsoft Visual C++ 2008 express edition. Retrieved May 21, 2012, from http://www.microsoft.com/express/vc/ Microsoft Inc. (2012b). Microsoft script editor. Retrieved May 21, 2012, from http://msdn.microsoft.com/en-us/library/aa189846(office.10).aspx
Kompozer: Nvu’s Unofficial Bug-Fix Release. (2012). Retrieved May 21, 2012, from http:// kompozer.net/download.php
Milkovits, M. N. (2005, December 4-7). Digital video cluster simulation. In M. E. Kuhl, N. M. Steiger, F. B. Armstrong & J. A. Joines (Eds.), In Proceedings of the 2005 Winter Simulation Conference, Orlando, FL.
Kumar, A. (2005). Development of laboratory exercises based on OPNET IT guru academic version. Rivier Academic Journal, 1(1). Retrieved May 21, 2012, from http://www.rivier.edu/journal/ RCOAJ-Fall-2005_table.htm
Miller, G. (1956). The magical number of seven, plus or minus two: Some limits on our capacity for processing information. Psychological Review, 63(2), 81–97. doi:10.1037/h0043158 PMID:13310704.
Lewis, J., & Loftus, W. (2003). Java software solutions: Foundations of program design (3rd ed.). Boston, MA: Addison Wesley.
Min, G. W. (2012). Minimalist GNU for Windows. Retrieved May 21, 2012, from http://www. mingw.org/
Light-Up Puzzle Program. (2012). Puzzle-Loop. Com. Retrieved May 21, 2012, from http://www. puzzle-light-up.com/
MinGW Developer Studio. (2012). Retrieved May 21, 2012, from http://programmerstools. org/node/368
Lippman, S. B., Lajoie, J., & Moo, B. E. (2005). C++ Primer (4th ed.). Boston, MA: AddisonWesley.
Mozilla Firefox. (2012). Retrieved May 21, 2012, from http://www.mozilla.com/en-US/firefox/
Littlefair, T. CCCC: C and C++ Code Counter. (1998). SourceForge.Net. Retrieved May 21, 2012, from http://cccc.sourceforge.net/ Lorenz, E. N. (1995). The essence of chaos. Boca Raton, FL: CRC Press. McCabe™ IQ Software Package. (2012). Retrieved May 21, 2012, from http://www.mccabe. com/iq.htm
Mozilla Suite: The All-in-One Internet Application Suite. (2012). Retrieved May 21, 2012, from http:// www.mozilla.org/products/mozilla1.x/ MySQL: The World’s Most Popular Open Source Database. (2012). Retrieved May 21, 2012, from http://dev.mysql.com/ NetBeans. (2012). Retrieved May 21, 2012, from http://www.netbeans.org/
167
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
NetBeans C and C++ Development. (2012). Retrieved May 21, 2012, from http://www.netbeans. org/features/cpp/index.html Notepad++. (2012). Retrieved May 21, 2012, from http://notepad-plus.sourceforge.net/uk/site.htm NoteTab Lite. (2012). Retrieved May 21, 2012, from http://www.fookes.com/notetab/index.php Nvu: The Complete Web Authoring System for Windows, Mac, and Linux. (2012). Retrieved May 21, 2012, from http://www.nvu.com/ Opera Web Browser. (2012). Retrieved May 21, 2012, from http://www.opera.com/ Oracle Database Software Downloads. (2012). Retrieved May 21, 2012, from http://www.oracle. com/technology/software/products/database/ index.html Panko, R. (2012). Seven OPNET Labs. Retrieved May 21, 2012, from http://www.opnet.com/ university_program/teaching_with_opnet/textbooks_and_materials/itg_panko.html PBWiki. (2012). Retrieved May 21, 2012, from http://pbwiki.com/ Perl Directory. (2012). Retrieved May 21, 2012, from http://www.perl.org/ Peterson, L. L., & Davie, B. S. (2005). Computer networks: A system approach (3rd ed.). Boston, MA: Morgan Kaufmann. Pevac, I. (2005). Recursive examples in java. Ann Arbor, MI: ProQuest Information & Learning. PHP: Hypertext Preprocessor. (2012). Retrieved May 21, 2012, from http://www.php.net/ phpMyAdmin. (2012). Retrieved May 21, 2012, from http://www.phpmyadmin.net/home_page/ index.php PostgreSQL: The world’s most advanced open source database. (2012). Retrieved May 21, 2012, from http://www.postgresql.org/
168
Python. (2012). Retrieved May 21, 2012, from http://www.python.org/ Qt Product Overview – single source C++ crossplatform application development for Windows, Linux, Mac. (2012). Trolltech corp. Retrieved May 21, 2012, from http://www.trolltech.com/ products/qt/index.html Quanta Plus. (2012). Retrieved May 21, 2012, from http://quanta.kdewebdev.org/ QueryForm Database Tool. (2012). Retrieved May 21, 2012, from http://sourceforge.net/projects/qform/ Riabov, V. (1997, March 19-21). Comparative analysis of aerospace education programs in American and Russian universities. In Proceedings of the Mechanical Engineering Department Heads Conference, San Diego, CA. New York, NY: The American Society of Mechanical Engineering. Riabov, V. (2000a). Challenge in the aerospace university classroom (AIAA Paper, No. 20000802). Washington, DC: AIAA Inc.. Riabov, V. (2000b). New challenges for aerospace education programs in American and Russian universities (AIAA Paper No. 2000-0528). Washington, DC: AIAA Inc.. Riabov, V. (2000c). Gas dynamic equations, transport coefficients, and effects in nonequilibrium diatomic gas flows. Journal of Thermophysics and Heat Transfer, 14(3), 404–411. doi:10.2514/2.6538. Riabov, V. (2002a, September 8-13). Simulation techniques in hypersonic aerodynamics. In Proceedings of the 23rd ICAS Congress, Toronto, Canada. Riabov, V. (2002b, September 8-13). Computational and analytical methods in the aircraft design curriculum. In Proceedings of the 23rd ICAS Congress, Paper 255p, Toronto, Canada.
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Riabov, V. (2003, June 17-20). Applications of exponential box schemes for viscous flows with combustion and blowing. In K. J. Bathe (Ed.), In Proceedings of the Second MIT Conference on Computational Fluid and Solid Mechanics (Vol. 1, pp. 1102-1105). Boston, MA: Elsevier. Riabov, V. (2004). Storage area networks. In Bidgoli, H. (Ed.), The internet encyclopedia (Vol. 3, pp. 329–339). Hoboken, NJ: John Wiley & Sons, Inc. doi:10.1002/047148296X.tie164. Riabov, V. (2005a). Networking software studies with the structured testing methodology. In Petratos, P., & Michalopoulos, D. (Eds.), Computer science and information systems (pp. 261–276). Athens, Greece: Atiner. Riabov, V. (2005b, June 13-14). Three fast computational approximation methods in hypersonic aerothermodynamics. In K. J. Bathe (Ed.), In Proceedings of the Third MIT Conference on Computational Fluid and Solid Mechanics (Vol. 1, pp. 819-823). Boston, MA: Elsevier. Riabov, V. (2005c). Mathematics and computer science lecture series (2002–2005). Rivier Academic Journal, 1(1). Retrieved May 21, 2012, from http://www.rivier.edu/journal/RCOAJFall-2005_table.htm Riabov, V. (2005d). Professional seminar in computer science (Spring 2005). Rivier Academic Journal, 1(1). Retrieved May 21, 2012, from http:// www.rivier.edu/journal/RCOAJ-Fall-2005_table. htm Riabov, V. (2006a). Challenging projects and virtual labs in web-enhanced networking technology classes. Journal of Computing Sciences in Colleges, 21(6), 88–99.
Riabov, V. (2007, February 15-18). Exploring singular differential equations with exponential box-scheme. In Proceedings of the 19th Annual International Conference on Technology in Collegiate Mathematics, Boston, MA (pp. 173-177). Retrieved May 21, 2012, from http://archives. math.utk.edu/ICTCM/VOL19/C032/paper.pdf Riabov, V. (2009). Numerical simulation of interactions between dissociating gases and catalytic materials in shock tubes. In Hannemann, K., & Seiler, F. (Eds.), Shock Waves (Vol. 2, pp. 1437–1442). Berlin, Germany: Springer-Verlag. doi:10.1007/978-3-540-85181-3_104. Riabov, V. (2011). Methodologies and tools for the software quality assurance course. Journal of Computing Sciences in Colleges, 26(6), 86–92. Riabov, V. (2012a). Advanced study cases for numerical analysis. Journal of Computing Sciences in Colleges, 27(6), 58–60. Riabov, V. (2012b). Instructor’s website. Retrieved May 21, 2012, from http://www.rivier.edu/faculty/ vriabov/ Riabov, V., & Higgs, B. (2010a). Software tools and virtual labs in online computer-science classes. In Kats, Y. (Ed.), Learning management system technologies and software solutions for online teaching: Tools and applications (pp. 332–350). Hershey, PA: IGI Global. doi:10.4018/978-161520-853-1.ch018. Riabov, V., & Higgs, B. (2010b). Running a computer security course: Challenges, tools, and projects. Journal of Computing Sciences in Colleges, 25(6), 245–247.
Riabov, V. (2006b). Simple mail transfer protocol (SMTP). In Bidgoli, H. (Ed.), The handbook of information security: Key concepts, infrastructures, standards and protocols (Vol. 1, pp. 878–900). Hoboken, NJ: John Wiley & Sons, Inc..
169
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
Riabov, V., & Higgs, B. (2011, March 17-20). Algorithms and software tools for teaching mathematical fundamentals of computer security. In Proceedings of the 23rd Annual International Conference on Technology in Collegiate Mathematics, Denver, CO (pp. 208-217). Retrieved May 21, 2012, from http://archives.math.utk.edu/ ICTCM/VOL23/S062/paper.pdf Rivest, R., Shamir, A., & Adleman, L. (1978). A method for obtaining digital signatures and publickey cryptosystems. Communications of the ACM, 21(2), 120–126. doi:10.1145/359340.359342. Rivier Academic Journal. (2012). Journal Archive. Nashua, NH: Rivier University. Retrieved May 21, 2012, from http://www.rivier.edu/journal/ archive.htm Rosenberg, L. H., & Hyatt, L. (1998, April 18-23). Applying and interpreting object-oriented metrics. In Proceedings of the Tenth Annual Software Technology Conference, Salt Lake City, UT. Sabin, M., & Higgs, B. (2007, October 18-20). Teaching and learning in live online classrooms. In Proceedings of the 8th ACM SIG - Information Technology Education (SIGITE 2007) Conference, Sandestin, FL (pp. 41-48). Sabin, M., Higgs, B., Riabov, V., & Moreira, A. (2005). Designing and running a pre-college computing course. Journal of Computing Sciences in Colleges, 20(5), 176–187. SeaMonkey. (2012). Retrieved May 21, 2012 from http://www.seamonkey-project.org/ Selent, D. (2011). The design and complexity analysis of the light-up puzzle program. Journal of Computing Sciences in Colleges, 26(6), 187–189. Servlet 2.3 and JavaServer Pages 1.2 Specifications. (2012). Retrieved May 21, 2012, from http:// www.jcp.org/aboutJava/communityprocess/first/ jsr053/
170
Snogles, D. (2005). Personal encrypted talk - Securing instant messaging with a java application. Rivier Academic Journal, 1(1). Retrieved May 21, 2012, from http://www.rivier.edu/journal/ RCOAJ-Fall-2005_table.htm Sood, A. (2007). Network design by using OPNET™ IT guru academic edition software. Rivier Academic Journal, 3(1). Retrieved May 21, 2012, from http://www.rivier.edu/journal/ RCOAJ-Spring-2007_table.htm SourceEdit. (2012). Retrieved May 21, 2012, from http://www.brixoft.net/prodinfo.asp?id=1 SourceMonitor Freeware Program. (2012). Campwood Software, Inc. Retrieved May 21, 2012, from http://www.campwoodsw.com/sourcemonitor.html SQLExplorer Plug-in for Eclipse. (2012). Retrieved May 21, 2012, from http://sourceforge. net/projects/eclipsesql SquirreL SQL Client. (2012). Retrieved May 21, 2012, from http://sourceforge.net/projects/ squirrelsql Szilagyi, D., Sood, A., & Singh, T. (2009). RADIUS: A remote authentication dial-in user service. Rivier Academic Journal, 5(2). Retrieved May 21, 2012, from http://www.rivier.edu/journal/ RCOAJ-Fall-2009_table.htm TextPad, The Text Editor for Windows. (2012). Retrieved May 21, 2012, from http://www.textpad.com/ The Common Gateway Interface. (2012). Retrieved May 21, 2012, from http://hoohoo.ncsa. uiuc.edu/cgi/overview.html The Request For Comments Editor. (2012). Retrieved May 21, 2012, from http://www.rfceditor.org/ TinySQL. (2012). Retrieved May 21, 2012, from http://sourceforge.net/projects/tinysql/
Tools and Methodologies for Teaching Online Computer-Science Courses in LMS Environment
TopStyle Lite. (2012). Retrieved May 21, 2012, from http://www.newsgator.com/individuals/ topstyle/default.aspx
Web Developer. (2012). Retrieved May 21, 2012, from https://addons.mozilla.org/en-US/firefox/ addon/60
Trellian WebPage. (2012). Retrieved May 21, 2012, from http://www.trellian.com/webpage/
Weiss, M. A. (1999). Data structures & algorithm analysis in java. Boston, MA: Addison Wesley.
(1999). Using McCabe QA. Columbia, MD: McCabe & Associates.
WiFi Alliance. (2012). Retrieved May 21, 2012, from http://www.wi-fi.org/OpenSection/index.asp
V – A Freeware Portable C++ GUI Framework. (2012). Retrieved May 21, 2012, from http://programming.ccp14.ac.uk/objectcentral/main.htm
WinSCP. (2012). Retrieved May 21, 2012, from http://winscp.net/eng/index.php
Varga, A. (2004). OMNeT++ version 3.0 user manual. Retrieved May 21, 2012, from http:// www.omnetpp.org/ Violet UML Editor. (2012). Retrieved May 21, 2012, from http://www.horstmann.com/violet/ Visual Paradigm, Inc. (2012). Visual paradigm for UML community edition (VP-UML CE). Retrieved May 21, 2012, from http://www.visual-paradigm. com/product/vpuml/editions/community.jsp Watson, A. H., & McCabe, T. J. (1996). Structured testing: A testing methodology using the cyclomatic complexity metric (NIST Special Publication, No. 500-235). Gaithersburg, MD: National Institute of Standards and Technology.
Wireshark: A Network Protocol Analyzer. (2012). Retrieved May 21, 2012, from http://www.wireshark.org/ Wooley, B. A. (2002). Utilizing a computing lab to improve retention and recruiting of computer science and computer information science students. In Proceedings of the 18th Annual CCSC Eastern Conference, Bloomsburg, PA. WordPress. (2012). Retrieved May 21, 2012, from http://wordpress.org/ Wu, C. T. (2006). An introduction to objectoriented programming with java (4th ed.). New York, NY: McGraw-Hill Higher Education. Zweben, S., & Aspray, W. (2004). 2002-2003 Taulbee survey - Undergraduate enrollments drop; Department growth expectations moderate. Computing Research News, 16(1), 5–19.
171