COURSE DESCRIPTIONS

COMPUTER SCIENCE

CS 100 Internet and Web Technologies
3 credits; 3 class hours
This course provides students with practical knowledge about computer hardware and software, and a basic understanding of the underlying telecommunications  technology of the Internet.   Students learn to navigate and search the Internet, while exploring numerous research-related web sites using E-mail, FTP, WAIS and Telnet services.  After exploring and using HTML to create Web pages, JavaScript is introduced and used for devel-oping client-side applications for Web browsers.  These markup and script languages are used to introduce com-puter    programming fundamentals.  Students produce a publishable home page or other Web document as their final course project.

Co-requisite: MTH 138 or Higher

CS 151 Introduction to Computing

3 credits; 3 class hours; 1 lab hour
This course introduces the fundamental concepts of the discipline of computing, emphasizing elementary facts concerning computer architecture, programming  languages, software methodology, and algorithms. Students learn how to solve problems using an appropriate block-structure high-level programming language. Programming topics include: basic data structures, control structures, data and procedure abstractions, functions and function parameters, recursion, pointers, classes and file processing.

Co-requisite: MTH 151 Pre-Calculus

CS 241 Discrete Structures

3 credits; 3 class hours; 1 lab hour
The objective of this course is to introduce the elements of discrete mathematics systems pertinent to the field of computer science.  Through computer programming examples, exercises and case studies, students are taught the following mathematical concepts: sets and binary relations, functions, first-order logic, proof techniques, algebraic systems, graph theory, vectors and matrices, elementary probability theory, combinatorial computing and counting arguments.  Definitions and analysis of algorithms are also introduced. 

Pre-requisite: CS 15l    

CS 244 Object Oriented Programming and Design

3 credits; 3 class hours; 1 lab hour
This course presents an object-oriented approach to soft-ware development used in large-scale programming proj-ects.  A software engineering methodology, such as the Unified Modeling Language (UML), will be used for object, dynamic, and functional modeling. Students learn how to implement a system using an appropriate object-oriented programming language.  Programming topics include: Classes and data abstraction, operator overloading, inheritance, virtual functions and polymorphisms, tem-plates, exception handling, and class libraries including GUI applications.

Pre-requisite: CS 151

CS 246 Data Structures and Algorithms
3 credits; 3 class hours; 1 lab hour
This course introduces the different ways that data is organized and stored in computer memory and the relevant procedures used in the manipulation of that data. The idea of abstract data types (ADTs) is first introduced, and then reinforced through the characterization of  fundamental data structures in the discipline - stacks, queues, and trees.  Other topics are recursive algorithms, dynamic storage, and complexity. Algorithms for searching and sorting are also implemented. Pre-requisite: CS 241 and CS 244

CS 252 Assembly Language and Architecture

3 credits; 3 class hours; 1 lab hour
In assembly language and architecture, students are exposed to the register level archtecture of a modern processor and gain experience programming in the assembly language for that processor.  ALU, memories, and interfaces are covered.  Emphasis is placed on machine language, instruction formats and executions, addressing and indexing, computation and control instruc-tions, and digital representation of data.  Program seg-mentation, linkage, subroutine calling conventions, and floating-point operations are also discussed.

Pre-requisites: CS 244 Object Oriented Programming and Design

CS 260 Digital Systems

4 credits; 3 class hours; 3 lab hours
This course presents the theoretical principles and mathe-matical techniques involved in the hardware design of digital systems.  Topics include: number systems and codes, Boolean algebra, Boolean functions, canonical forms, logic gate realization, universal gates, combinational and sequential circuits, and minimization of functions using Karnaugh maps, the Quine-McCluskey method and basic computer organization.  Interactive circuit design software is used for laboratory experiments.

Pre-requisite: CS 252

CS 265 UNIX Systems Programming
3 credits; 3 class hours; 1 lab hour
This course provides an in-depth study in the programming of UNIX systems.  Topics include: UNIX commands, the UNIX File System and its related structures, Editors, the UNIX Command Interpreter, System Administration, Shell Programming, UNIX Applications Operating Environments, communicating and networking through UNIX.  

Pre-requisite: CS 244

CS 278 Robot Programming
3 credits; 3 class hours; 1 lab hour
This course provides a hands-on introduction to program-ming machines that interact with the real world using sen-sors, actuators, and limited computational resources. Physical robots are programmed to  demonstrate "artificially intelligent" behavior by using sensors to watch for and react to changes in the physical world.  A Survey of salient characteristics, including definition and structure, and specification of syntax and semantics, for graphical, text-based, object-oriented, and query robot program-ming languages is covered.  Web-based distance-learning tools are used to introduce robot fundamentals and verify programs.

Pre-requisite: CS 246

CS 280 Artificial Intelligence
3 credits; 3 class hours; 1 lab hour
This course examines the ideas and techniques underlying the design of intelligent computer systems.  Topics include knowledge representation, heuristic versus algorithmic search methods, problem solving, game playing, logical inference, planning, reasoning under uncertainty, expert systems, learning, perception, natural language under-standing, and intelligent agents.  A functional program-ming language appropriate to Artificial Intelligence will be introduced.

Pre-requisites: CS 246  Data Structures and Algorithms

CS 300 Theoretical Computer Science

3 credits; 3 class hours; 1 lab hour T
This course focuses on fundamental issues of Computer Science Theory, Automata and Formal Language Theory, and the Theory of Computational Complexity. Topics include formal languages, finite state automata, pushdown automata, Turing machines and the languages they recog-nize.  This course also examines computability by recursive functions, Church's Thesis, undecidability, the classes P and NP, NP-complete problems and intractable problems.

Pre-requisite: CS 246  Data Structures and Algorithms  and

MTH  202 Calculus I 

CS 301 Software Development

3 credits; 2 class hours; 2 lab hours
This course provides an implementation-oriented introduction to the software-development techniques used to cre-ate medium-scale interactive applications. The capabilities of the Java programming language and its runtime envi-ronment are covered.  Topics include: 

1. Navigating the Java Class Libraries
2. Imperative and Object-oriented Programming 
3. Exception Handling 
4. Event Handling 
5. Concurrency 
6. Multithreading 
7. Collections 
8. Graphics 
9. GUI programming and frame layout 
10. Applets 
11. Input/output and Networking with Java

Pre-requisite: CS 246

CS 305/TLC305 Data Communications and Web Technologies

3 credits; 4 class hours
This course is designed to provide the students with a fundamental technical and practical background in data communications with the context of network technologies. Topics include fundamental concepts of data  communications; data transfer modes; the OSI model; transmission mediums and the physical layers; modems and modem standards; local area networks (LANs) and wide area networks (WANs); communications standards including communications codes, application support pro-tocols, and network architecture; and intranet/Internet routers.

Pre-requisites: CS 246 and TLC 221 

CS 307/TLC 307 Local and Wide Area Networks
3 credits; 2 class hours; 2 lab hours
This course covers computer network analysis and design and its applications.  A variety of network topologies for centralized, decentralized and distributed networks will be discussed.  Topics include LAN fundamentals, evaluating LAN cabling systems, switching techniques, routing algorithms, flow control, survey and comparison of existing commercial Local Area Networks.  Students will learn to configure, install, operate, troubleshoot and administer networks.

Co-requisite: CS 305 and TLC 305

CS 309/TLC 309 Network Programming

3 credits; 2 class hours; 2 lab hours
This course focuses on interconnecting Local Area Networks (LAN) into larger private and public networks including Enterprise and Wide Area Networks (WAN). Topics include network programming with Sockets, TCP/IP protocol stack, server side/client side applications  programming.  Students will have the opportunity to take Microsoft, Novell and Netscape examinations towards \certification as Web Masters. 

Pre-requisites: CS 305 and TLC 305

CS 310 Special Topics in Computer Science
3 credits 3 class hours
Courses on contemporary topics in computer science to be offered according to the latest developments in the field and the needs of the students.  Students are taught the underlying principles of analysis, design, and implementa-tional issues involved in computing.  Several examples and applications are used to illustrate the theory and concepts covered.  A detailed description for each special topic offering may be obtained in the Department office prior to registration.  Students are also required to submit a research paper on an approved topic.

Pre-requisites: CS 246 and Permission of the Chairperson or Coordinator of Computer Science.

CS 312 Analysis of Algorithms 

3 credits; 4 class hours
This course covers measuring algorithmic complexity (O- Notation); searching and sorting algorithms and their com-plexity; tree and graph algorithms and their complexity; classes of algorithms, such as divide-and-conquer, back-tracking, greedy, probabilistic, etc. Computational complexity; the classes P and NP.

Pre-requisites: CS 246 Data Structures and Algorithms 

CS 315 Operating Systems
3 credits; 3 class hours; 1 lab hour
This course is an introduction to operating systems.  Topics include task management and scheduling, process and data management, resource allocation, interrupts, time sharing, concurrent processing, linear and tree-structured address space, resource allocation for multiprogramming, and queuing and network control policies.  This course includes several detailed case studies that covers today's most widely used single-user, multi-user, and network operating systems.

Pre-requisite: CS 246 Data Structures and Algorithms 

CS 319/ENVS 319 Geographical Information Systems
3 credits; 3 class hours; 1 lab hour
This course examines the automated systems for the   capture, storage, retrieval, analysis and display of spatial data.  Topics include automated geography, spatial analysis, map as model, GIS data structures, GIS data input, storage and editing, classification, statistical  surfaces, spatial arrangements, cartographic modeling, output from analysis, and GIS design and implementation.

Pre-requisite: CS 151

CS 321 Remote Sensing: Computer Methods for Satellite Data Analysis

3 credits; 2 class hours;  2 lab hours
This course emphasizes the scientific principles of satellite data analysis and efficiency of computer methods for  carrying out this analysis and convert raw data into meaningful physical quantities.  Topics include: concepts and systems, electromagnetic energy, photographs from aircraft and satellite, remote sensing in the visible and IR spectrum, active and passive remote sensing, thermal IR images, Earth resources, image processing and interpreta-tion, meteorological, oceanographical and environmental applications, and monitoring natural hazards, geographic information system and overview of scatterometry. Course includes Hands-on demonstrations and data analysis of satellite data.

Pre-requisite: CS 151

 

CS 325 Computer Architecture

3 credits; 3 lecture hours; 1 lab hour
Topics include instruction formats and addressing schemes, arithmetic and logic unit design, control unit design, main memory technology, virtual, high speed, associate and read only memories, programmable logic arrays, computer organization including stack, parallel and pipeline, and system structures: time sharing, multiprocessing and net-working.

Pre-requisite: CS 260 Digital Systems  

CS 345 Scientific Programming I: Data Analysis

3 credits; 4 class hours
This course is an introduction to numerical algorithms for scientific computation. It covers basic concepts of numeri-cal error, interpolation, quadrature, vectors and matrices, solution of linear systems of equations, non-linear equa-tions.  Computer implementation aspects are also investigated. Student programming applications will involve real-world datasets from NASA missions, EPA and NOAA using C++ and Java. Pre-requisite: CS 246

CS 350 Programming Language Paradigms
3 credits; 3 class hours; 1 lab hour 
This course provides an overview of the key paradigms used in modern programming languages and illustrates those paradigms with several programming languages. It also provides sufficient formal theory to demonstrate the role of programming language design in the context of the general computer science research agenda.

Pre-requisite: CS 246 Data Structures and Algorithms 

CS 360 Software Engineering
3 credits; 3 class hours; 1 lab hour
This course introduces students to the phases, methodologies and tools involved in the software production process.
Topics include the software life cycle, specifications and design, quality assurance and testing, maintenance as well as related economic aspects in the production of software. Students are also introduced to design and documentation tools utilized by software  engineers and issues related to portability and reusability. The course is also an introduction to technical writing.

Pre-requisite: CS 246

CS 381 Database Systems

3 credits; 3 class hours; 1 lab hour
This course provides the basis for a solid education in the fundamentals of database technology.  Topics include Database Management, Database System Architecture, Relational Data Base Systems (Query Languages, Application Development Systems), Software Specific (Self Contained) and Hardware Specific (Data Base Machines). Data manipulation language studied include: SQL, rela-ional calculus, Query-By-Example, and natural languages.

Pre-requisite: CS 246

CS 390 Scientific Programming II: Modeling and Simulation

3 credits; 4 class hours Simulation of dynamic, physical systems using models involving numerical and logical processes.  Modeling  concepts, description in terms of entities, attributes, and activities, time flow mechanisms, queues, event-oriented vs. particle-oriented models. Collection and evaluation of  statistics.  Simulation languages.  Computer projects using a general-purpose language (e.g. C++) and at least one simulation language (e.g. GPSS) will be assigned.

Pre-requisite: CS 345

CS 392 Advanced Topics in Computer Science 
3 credits; 4 class hours
This course investigates the latest developments in the fields of Computer Science, Space Science, Earth Science and/or Environmental Science.  Students are taught the underlying principles, data acquisition and analysis.

Several examples and applications are used to illustrate the theory and concepts covered. A detailed description for each special topics offering may be obtained in the Department office prior to registration.  Students are required to submit a research paper on an approved topic. 

Pre-requisite: CS 345

CS 401 Computer Science Internship/Research I
3 credits; 6 class hours (minimum)
Students are required to participate in an internship or complete a significant research project during their senior year.  This research and internship experience must involve project management: planning, scheduling, and production of a computing system.  In addition to these technical skills, student should also develop an understand-ing of the social, ethical and economic considerations of project management.  Students are required to attend weekly seminars, write an in-depth report, and give an oral presentation.

Pre-requisites: Permission of chairperson

 

CS 402 Computer Science Internship/Research II
3 credits; 6 class hours (minimum)
This course is a continuation of CS 401.

Pre-requisites: CS 401