This minor provides computing students with a firm foundation in networking and/or systems administration. Computer networks and the systems attached to these networks have become ubiquitous. Therefore, knowledge of how computer networks function, their administration, and the administration of the systems attached to them can be of value to every computing professional since their work is impacted in some way by computer networks and computer systems. Students may choose between two tracks: networking or system administration.
Students choose a two course introductory programming sequence*
Computer Science I
This course serves as an introduction to computational thinking using a problem-centered approach. Specific topics covered include: expression of algorithms in pseudo code and a programming language; functional and imperative programming techniques; control structures; problem solving using recursion; basic searching and sorting; elementary data structures such as lists, trees, and graphs; and correctness, testing and debugging. Assignments (both in class and for homework) requiring a pseudo code solution and an implementation are an integral part of the course. An end-of-term project is also required. Lec/Lab 6 (Fall, Spring).
Computer Science II
This course delves further into problem solving by continuing the discussion of data structure use and design, but now from an object-oriented perspective. Key topics include more information on tree and graph structures, nested data structures, objects, classes, inheritance, interfaces, object-oriented collection class libraries for abstract data types (e.g. stacks, queues, maps, and trees), and static vs. dynamic data types. Concepts of object-oriented design are a large part of the course. Software qualities related to object orientation, namely cohesion, minimal coupling, modifiability, and extensibility, are all introduced in this course, as well as a few elementary object-oriented design patterns. Input and output streams, graphical user interfaces, and exception handling are covered. Students will also be introduced to a modern integrated software development environment (IDE). Programming projects will be required. (Prerequisites: CSCI-141 with a grade of C- or better or equivalent course.) Lec/Lab 6 (Fall, Spring, Summer).
Computational Problem Solving in the Information Domain I
A first course in using the object-oriented approach to solve problems in the information domain. Students will learn to design software solutions using the object-oriented approach, to visually model systems using UML, to implement software solutions using a contemporary programming language, and to test these software solutions. Additional topics include thinking in object-oriented terms, and problem definition. Programming projects will be required. Lec/Lab 6 (Fall, Spring).
Computational Problem Solving in the Information Domain II
A second course in using the object-oriented approach to solving problems in the information domain. Students will learn: basic design principles and guidelines for developing graphical user interfaces, and use of the Event Model to implement graphical interfaces; algorithms for processing data structures; multithreading concepts and use of the Multithreading Model to design and implement advanced processing methods. Additional topics include the relational model of information organization, and the Client-Server model. Individual implementation projects are required. A team implementation exercise is used to provide students an opportunity to apply basic software development and project management practices in the context of a medium-scale project. (Prerequisites: ISTE-120 or NACA-161 or equivalent course.) Lec/Lab 6 (Fall, Spring).
Computational Problem Solving in the Network Domain I
A first course in using the object-oriented approach in the network domain. Students will learn to design software solutions using the object-oriented approach, to implement software solutions using a contemporary programming language, and to test these software solutions. Topics include thinking in object-oriented terms, problem definition, designing solutions using the object-oriented approach, implementing solutions using a contemporary programming language, and testing software solutions. Programming projects will be required. Lec/Lab 3 (Fall, Spring).
Computational Problem Solving in the Network Domain II
A second course in object-oriented problem solving in the network domain. Students will learn to develop software for the applications layer of the protocol stack. Topics include data structures, network processes, network protocols, and network security. Programming projects will be required. (Prerequisites: ISTE-100 or ISTE-202 or equivalent course.) Lec/Lab 6 (Fall, Spring).
Game Development and Algorithmic Problem Solving I
This course introduces students within the domain of game design and development to the fundamentals of computing through problem solving, abstraction, and algorithmic design. Students will learn the basic elements of game software development, including problem decomposition, the design and implementation of game applications, and the testing/debugging of their designs. (This course is restricted to GAMEDES-BS Major students.) Lec/Lab 6 (Fall, Spring).
Game Development and Algorithmic Problem Solving II
This course furthers the exploration of problem solving, abstraction, and algorithmic design. Students apply the object-oriented paradigm of software development, with emphasis upon fundamental concepts of encapsulation, inheritance, and polymorphism. In addition, object structures and class relationships comprise a key portion of the analytical process including the exploration of problem structure and refactoring. Intermediate concepts in software design including GUIs, threads, events, networking, and advanced APIs are also explored. Students are also introduced to data structures, algorithms, exception handling and design patterns that are relevant to the construction of game systems. (Prerequisites: C- or better in IGME-105 or equivalent course and student standing in the GAMEDES-BS program.) Lec/Lab 6 (Fall, Spring).
Computational Problem Solving I
This is the first course in a two-course sequence in computational problem solving of engineering and scientific problems. The problems solved will stress the application of sequence, selection, repetitive, invocation operations, and arrays. The development of proper testing procedures to ensure computational accuracy will be stressed. Students, upon successful completion of this course, will be able to analyze introductory engineering and scientific problems, design, code, test, and document procedural software solutions. Lec/Lab 4 (Fall, Spring).
Computational Problem Solving II
This is the second course in a two-course sequence in computational problem solving of engineering and scientific problems. The problems solved will stress the application of data structures and object oriented classes. Data encapsulation, data management, and design robustness will be stressed. Students, upon successful completion of this course, will be able to analyze complex engineering and scientific problems, design, code, test, and document objected-oriented software solutions. (Prerequisites: CPET-121 or equivalent course.) Lec/Lab 4 (Fall).
Software Development and Problem Solving I
A first course introducing students to the fundamentals of computational problem solving. Students will learn a systematic approach to problem solving, including how to frame a problem in computational terms, how to decompose larger problems into smaller components, how to implement innovative software solutions using a contemporary programming language, how to critically debug their solutions, and how to assess the adequacy of the software solution. Additional topics include an introduction to object-oriented programming and data structures such as arrays and stacks. Students will complete both in-class and out-of-class assignments. Lab 6 (Fall, Spring).
Software Development and Problem Solving II
A second course that delves further into computational problem solving, now with a focus on an object-oriented perspective. There is a continued emphasis on basic software design, testing & verification, and incremental development. Key topics include theoretical abstractions such as classes, objects, encapsulation, inheritance, interfaces, polymorphism, software design comprising multiple classes with UML, data structures (e.g. lists, trees, sets, maps, and graphs), exception/error handling, I/O including files and networking, concurrency, and graphical user interfaces. Additional topics include basic software design principles (coupling, cohesion, information expert, open-closed principle, etc.), test driven development, design patterns, data integrity, and data security. (Prerequisite: C- or better in SWEN-123 or CSEC-123 or GCIS-123 or equivalent course.) Lab 6 (Fall, Spring, Summer).
Computer Systems Concepts †
This course teaches the student the essential technologies needed by NSSA majors, focused on PC and mainframe hardware topics. They include how those platforms operate, how they are configured, and the operation of their major internal components. Also covered are the basic operating system interactions with those platforms, physical security of assets, and computing-centric mathematical concepts. Lab 2 (Fall, Spring).
Introduction to Routing and Switching †
This course provides an introduction to wired network infrastructures, topologies, technologies, and the protocols required for effective end-to-end communication. Basic security concepts for TCP/IP based technologies are introduced. Networking layers 1, 2, and 3 are examined in-depth using the International Standards Organization’s Open Systems Interconnection and TCP/IP models as reference. Course topics focus on the TCP/IP protocol suite, the Ethernet LAN protocol, switching technology, and routed and routing protocols common in TCP/IP networks. The lab assignments mirror the lecture content , providing an experiential learning component for each topic covered. (Prerequisites: NSSA-102 or CSEC-101 or CSEC-140 or NACT-151 or CSCI-250 or equivalent courses.) Lab 2 (Fall, Spring).
Students choose one focus and complete three courses:
This course is designed to provide the student with an understanding of the protocols, principles and concepts of radio communication as they apply to wireless data networking (802.11) for local area networks and peripherals. As its basis it uses the fundamental concepts and technologies learned in Introduction to Routing and Switching, and expands upon them to include other contemporary and emerging technologies. Topics including WLANs, wireless network operation, network integration, construction and network design will be discussed. Modulation techniques, measurement standards, nomenclature, equipment and theory behind transmissions in this portion of the electromagnetic spectrum will be examined. (Prerequisites: NSSA-241 or equivalent course.) Lab 2 (Fall, Spring).
Advanced Routing and Switching
Advanced Routing and Switching covers advanced networking technologies available to enterprises. Protocol options and their evolutions over the years, the growth in complexity and its impacts are explored in depth. Topics include: VLANs and VLAN Hierarchies, Loop- Avoidance in customer, provider and provider backbone networks such as RSTP and Shortest Path Bridging, , IPv4 and IPv6 coexistence issues, Routing protocols with IPv4 and IPv6 for inter and intra-AS routing, MobileIP, queuing and Quality of service routing and congestion control in the Internet, MultiProtocol Label Switching, Routing and Switching in wireless networks (Prerequisites: NSSA-241 or equivalent course.) Lecture 3 (Spring).
Network Design and Performance
This course will examine the design and performance of networks. Students will learn to design networks based on identified needs and analyze the performance of that network. The designs include site, campus, and enterprise. WAN technologies will be combined with LAN technologies in the design of enterprise networks. A simulation tool may be used to implement the design as a network model and evaluate the performance of the network model. (Prerequisites: NSSA-241 or equivalent course.) Lecture 3 (Spring).
Task Automation Using Interpretive Languages
An introduction to the Unix operating system and scripting in the Perl and Unix shell languages. The course will cover basic user-level commands to the Unix operating system, followed by basic control structures, and data structures in Perl. Examples will include GUI programming, and interfacing to an underlying operating system. Following Perl, students will be introduced to the basics of shell programming using the Unix bash shell. Students will need one year of programming in an object-oriented language. (Prerequisite: GCIS-124 or ISTE-121 or ISTE -200 or CSCI-142 or CSCI-140 or CSCI-242 or equivalent course.) Lecture 4 (Fall, Spring).
Systems Administration I †
This course is designed to give students an understanding of the role of the system administrator in large organizations. This will be accomplished through a discussion of many of the tasks and tools of system administration. Students will participate in both a lecture section and a separate lab section. The technologies discussed in this class include: operating systems, system security, and service deployment strategies. (Prerequisites: NSSA-241 and (NSSA-220 or CSCI-141 or GCIS-123) or equivalent courses.) Lab 2 (Fall, Spring).
This class will take the students through the evolution of virtualization. The class begins with virtual network topologies such as VLANs, trunks and virtual routing and forwarding. The class will examine the various desktop virtualization platforms (Type 1) such as VirtualBox and VMWare workstation. Midway through the class students will transition into bare metal hypervisors (Type 2) and server virtualization. Elements of software defined networking, storage (ex. iSCSI) and cloud computing will also be discussed. (Prerequisites: NSSA-221 and NSSA-241 or equivalent courses.) Lecture 3 (Spring).
This course teaches students advanced techniques in the Perl language. Techniques include the use and construction of object oriented scripts, user administration and monitoring, file system walking and checking, and computer and network security issues. (Prerequisites: NSSA-220 or CSCI-141 or GCIS-123 or equivalent course.) Lec/Lab 4 (Fall).
Scalable Computing Architectures
This course explores mid-range (server farms and clusters) and mainframe system architecture, hardware, configuration, and operating system concepts. Students in this course gain understanding of the reasons companies choose mid-range and large-scale systems for their computing environments and how those firms implement those architectures. (Prerequisites: GCIS-124 or ISTE-121 or ISTE-200 or CSCI-142 or CSCI-140 or CSCI-242 or IGME-102 or IGME-106 or equivalent course.) Lecture 3 (Fall).
* An equivalent sequence may be approved by an advisor.
† Students in Computing Security are unable to use these courses as part of the three unique courses required for the minor as they are already part of their core or are equivalencies of courses they already take. Students will need to take three of the unmarked courses from their focus area.