|
21:198:100
Introduction to Computers and Information Processing (3)
Covers a general knowledge of computer use; history of computers and information processing, survey of modern computer science concepts, practical instruction in the use of a variety of data processing environments, and use of available software packages and databases; introduction to the internet.
May not be used for credit by computer science or information systems majors. This course fulfills the technology course requirement in the teacher certification program.
|
21:198:101
Computers and Programming I (3)
The basics of procedural programming in Java. Java primitive data types, loops, control structures, arrays, methods, an introduction to object-oriented programming, using classes and objects, writing classes, encapsulation.
Prerequisite: Fulfillment of mathematics proficiency requirement (21:640:106,107,108, or 109, or by examination). This course fulfills the technology course requirement in the teacher certification program.
|
21:198:102
Computers and Programming II (3)
Recursion and object-oriented programming in Java. Recursion, object-oriented design, inheritance, polymorphism, exception handling, collections.
Prerequisite: 21:198:101 (with a grade of C or better).
|
21:198:251
Computer Organization (3)
An introduction to computer system structure and organization. Topics include representation of information, circuit analysis and design, register-transfer level, processor architecture, and input/output.
Prerequisite: 21:198:102 (with a grade of C or better).
|
21:198:280
Programming Language Concepts (3)
Conceptual study of programming language syntax, semantics, and implementation. Course covers language definition structure, data types and structures, control structures and data flow, run-time consideration, and interpretative languages.
Prerequisite: CS114 or 21:198:335 or equivalent.
|
21:198:288
Intensive Programming in Linux (3)
The course covers Linux programming with Apache Web and MySql database using Php/Python and C as primary languages. It consists of four stages: basic tools such as Bash and C programming; searching trees and matrix computing; end-to-end applications such as one that constantly presents top 100 stocks; and extending the applications to run on multiple machines. The course provides students with hands-on experience for programming relatively large applications.
Prerequisite: 21:198:335.
|
21:198:300
Introduction to Computing System (3)
This course introduces the fundamental hardware and software of computing systems. It covers MOS transistors, logic gates, combinational and sequential logic circuits, memory, Von Neumann model, and architecture of a simple computer, as well as machine and assembly language programming.
Prerequisite: 21:198:102 or 21:198:251.
|
21:198:332
Principles of Operating Systems (3)
Organization of operating systems covering structure, process management, and scheduling; interaction of concurrent processes; interrupts; I/O, device handling; memory and virtual memory management, and file management.
Prerequisite: 21:198:335.
|
28:198:333
Introduction to UNIX Operating Systems (3)
Covers the UNIX system kernel including initialization, scheduling, context switching, process management, memory management, device management, and the file system. Also includes the organization of shells, editors, utilities, and programming tools of the UNIX operating system.
Prerequisites: 21&28:198:332 or equivalent, and knowledge of C language.
|
21:198:335
Data Structures and Algorithm Design (3)
Explores trees, paths, linear lists, strings, arrays, stacks, queues, linked structures, and algorithms for searching, sorting, and merging.
Prerequisite: 21:198:102 (with a grade of C or better).
|
28:198:341
Foundations of Computer Science II (3)
Provides an introduction to automata theory, computability theory, and
complexity theory. Theoretical models such as finite state machines,
push-down stack machines, and Turing machines are developed and related
to issues in programming language theory. Also covers undecidability
and complexity theory, including the classes P and NP.
Prerequisites: 28:198:280 and 21:640:237.
|
21:198:342
Cloud Computing (3)
The course explains how to create high-performance clusters, scalable networks, automated data centers, and high-throughput cloud/grid systems. The course covers programming, and the use of distributed or cloud systems in innovative internet applications. Topics cover the transformation of traditional multiprocessors and multicomputer clusters into web-scale grids and clouds.
Prerequisite: 21:198:332.
|
28:198:345
Web Search (3)
An introductory course on web searching. The architecture of a search engine. Information vs. data retrieval. Web crawling. Processing text (tokenization, stemming, stopwords, link analysis). The indexing process and inverted indexes. Query processing. Ranking algorithms based on indexes and links (e.g., Kleinberg's HITS, Google's PAGERANK). Retrieval models. Search engine evaluation. Case studies (e.g., Google cluster architecture).
Prerequisites: 28:198:280 and (21:640:237 or 21:198:251).
|
21:198:347
Introduction to Mobile Application Development (3)
This course introduces the dynamic world of Android smartphone and tablet app development with the Android Software Development Kit (SDK), and the Java programming language and the Android Studio Integrated Development Environment (IDE). The techniques introduced in this course also apply to Android Wear and Android TV app development. Apple iOS mobile application topics may also be covered.
Prerequisite: 21:198:335.
|
21:198:348
Introduction to Swift iOS Application Development (3)
This course introduces the dynamic world of Apple iOS smartphone and tablet application development with Apple's Xcode IDE and the SWIFT programming language. The techniques introduced in this course may also apply to Apple Wear and Apple TV application development.
Prerequisite: 21:198:102 or 21:219:220.
|
21:198:349
Introduction to Machine Learning and Artificial Intelligence (3)
Data is an asset only if it is of high quality and usable, otherwise it is a liability. This course introduces data mining, machine learning, deep learning, data analytics and data visualization combining statistical theories with real-world computer-based applications. Students, through hands on practice by running and creating machine learning projects, will gain understanding of the fundamentals of machine learning, deep learning, artificial intelligence and their real-world applications.
Prerequisite: 21:198:102 or 21:219:220.
|
21:198:351
Introduction to Cybersecurity (3)
This course covers the fundamentals of Cybersecurity. It introduces many different areas of security such as cryptography, malicious code, authentication and access control, trusted computer systems, operating systems, and network security. A combination of interactive lectures and integrated technology is used to provide a more effective, productive, and enhanced learning experience for students.
Prerequisite: 21:198:356 or 28:544:120.
|
28:198:352
Parallel Computers and Programming (3)
Introduction to parallel computers and parallel programming. General structures and design techniques of parallel computers are described. Programming paradigms and algorithm design considerations for parallel processors also are discussed.
Prerequisites: 21:198:251 and 21&28:198:332.
|
28:198:353
Advanced Computer Organization (3)
Emphasis on the basic design principles or various components in a
computer, as well as how the components are organized to build a
computer. Topics include design methodology, arithmetic and logic unit
design, control unit design, memory hierarchy, memory system design,
input and output devices, peripheral devices, and interfacing computers
using software. A software simulation package is used to help the
learning process. By the end of the semester, students will have built a
simulated computer.
Prerequisite: 21&28:198:251 or instructor-approved equivalent.
|
21:198:356
Introduction to Computer Networks (3)
This course provides an introduction to computer networks, with a special focus on the internet architecture and protocols. Topics include layered network architectures, addressing, naming, forwarding, routing, communication reliability, the client-server model, web, and email protocols. Besides the theoretical foundations, students acquire practical experience by programming reduced versions of real internet protocols.
Prerequisite: Computer science students should take 21:198:288 before this course.
|
28:198:357
Fundamentals of Network Security (3)
This course offers an in-depth study of network security issues, types of computer and network attacks, and effective defenses. It provides both a theoretical foundation in the area of security and hands-on experience with various attack tools, firewalls, and intrusion detection systems. Topics include: network scanning, TCP/IP stack fingerprinting, system vulnerability analysis, buffer overflows, password cracking, session hijacking, denial of service attacks, intrusion detection.
Prerequisite: 28:198:356 or IT 120.
|
28:198:366
3-D Game Development (3)
This course introduces students to the core concepts and skills necessary for the development of games utilizing 3-D graphics. Students will learn how to set up and program their own 3-D graphics-based game engine using OpenGL. Students will learn how to load and display custom 3-D models created using existing 3-D modeling tools. Once complete, students will have created two fully functional 3-D games and tools to work with them.
|
28:198:370
Introduction to Artificial Intelligence (3)
Exploration of concepts, approaches, and techniques of artificial
intelligence. Emphasizes both underlying theory and applications.
Topics include knowledge representation, parsing language, search,
logic, adduction, uncertainty, and learning. LISP and Prolog
programming languages used extensively. Students are required to do
programming assignments, complete a programming semester project, and
review case studies.
Prerequisites: 21:198:335 and 21:640:237.
|
28:198:371
Logic with Applications to Computer Science (3)
An introduction to both the syntax and semantics (basic model theory) of first-order logic, covering one set of inference rules, sequent calculus or a tableau system, and prove the completeness theorem for the proof system. Also covers a relatively modern (and simpler) form of incompleteness theorems and relates it to computational issues such as the halting problem, as well as issues related to automating logical reasoning. These will include Herbrand's theorem, resolution, and logic programming.
Prerequisites: 21:198:335, 21:640:237, and 21:640:235.
|
28:198:408
Cryptography and Internet Security (3)
Covers
security requirements for telecommunication over the internet and other
communication networks, various conventional and public-key encryption
protocols, digital encryption standard, RSA and ElGamal cryptographic
systems, digital signature algorithm and analysis of its
cryptoimmunity, and access sharing schemes.
Prerequisite: 21:640:237.
|
21:198:431
Database System Design & Management (3)
This course provides a comprehensive introduction to the language of relational databases: Structured Query Language (SQL). Topics covered include Entity-Relationship modeling, the Relational Model, the SQL language: data retrieval statements, data manipulation and data definition statements.
Prerequisite: 21:198:102 or 21:219:220.
|
28:198:432
Advanced Operating Systems (3)
A survey of the design and implementation of distributed operating systems, both by introducing basic concepts and considering examples of current systems. Topics include: communication, synchronization, processor allocation, and distributed file systems.
Prerequisites: 21:198:251 and 21&28:198:332.
|
28:198:433
Introduction to Linux Kernel Programming (3)
An introductory study of how the Linux operating system is built from scratch. As a hands-on course, students will perform intensive programming using Linux kernel. The contents include booting, segmentation and paging, creating and destroying processes, process switching and scheduling, handling exceptions and interrupts, software interrupts, creating system calls, creating file systems, networking with TCP/IP, device driver writing, and module programming, etc. At the end of the course, students will be able to modify the Linux operating system to create their own.
|
28:198:434
Advanced Database Systems (3)
Covers
the basic concepts of traditional files and file processing, provides a
classic introduction to the relational data model and its languages,
and discusses database design methodology and application developments.
Students are expected to learn the design of database application
systems through a small project and to get some practical hands-on
experience with commercial database management systems (DBMS) by
writing application programs using the commercial DBMS query languages.
Prerequisite: 21&28:198:431.
|
21:198:435
Advanced Data Structures and Algorithm Design (3)
Advanced topics in data structures and algorithms, including mathematical induction, analysis and complexity of algorithms, and algorithms involving sequences, sets, and graphs such as searching, sorting, order statistics, sequence comparisons, and graph traversals. Optional topics include geometric, algebraic, and numeric algorithms.
Prerequisites: 21:198:288 and 21:640:237.
|
28:198:438
Interactive Computer Graphics (3)
Introduces fundamental concepts of interactive graphics oriented toward computer-aided design systems used in engineering, architecture, and manufacturing. Topics include computer data structures for representation of two- and three-dimensional objects and algorithms for definition, modification, and display of these objects in applications. Discussion of special topics in interactive graphics.
Prerequisite: 21:198:101.
|
28:198:439
Image Processing and Analysis (3)
This course is an intensive study of the fundamentals of image processing, analysis, and understanding. Topics to be covered include: a brief review of the necessary mathematical tools, human visual perception, sampling and quantization, image transformation, enhancement, restoration, compression, reconstruction, image geometric transformation, matching, segmentation, feature extraction, representation and description, recognition, and interpretation.
Prerequisites: 21:640:335 and 327.
|
28:198:440
Computer Vision (3)
This course introduces basic concepts and methodologies of computer vision, and focuses on material that is fundamental and has a broad scope of applications. Topics include contemporary developments in all mainstream areas of computer vision, e.g., image formation, feature representation, classification and recognition, motion analysis, camera calibration, stereo vision, Shape From X (shading, texture, motion, etc.), and typical applications such as biometrics.
Prerequisite: 21:640:327.
|
28:198:441
Database Programming (3)
Many technologies have been developed due to the interplay between World Wide Web development and databases on one hand and the growth of database applications in ecommerce on the other hand. Today, practically every ecommerce application has at least a web component and a database component. Many languages have been developed in order to deal with these interactions. This course will focus on accessing databases through the web, but also mention new developments in the field.
|
28:198:451
Network Technologies (3)
This course provides an in-depth study of the different transmission and network technologies that make up the internet infrastructure. Topics include: physical layer technologies, multiplexing and switching, wired and wireless LANS, cellular networks, ATM networks, multimedia formats and protocols, multicasting, traffic characteristics and measurements, and QoS.
|
28:198:458
Technologies Network Security (3)
This course provides both an in-depth theoretical study and a practical exposure to technologies that are critical in providing secure communication over the internet. Topics include: remote access security, web security, wireless security, email security, spam and spam filtering techniques, computer viruses and internet worms, honeypots and honeynets, security liability issues, and compliance.
Prerequisite: 28:198:356.
|
28:198:478
Software Tools for Solving Problems (3)
Students interact directly with industry and solve problems using various information-systems software tools. Company representatives present problems they are facing, and the students work in groups to develop a solution, which they present at the end of the semester. Presentation skills, working in groups, and using software tools for problem solving stressed.
Prerequisites: Junior or senior standing, permission of instructor.
|
21:198:481,482
Advanced Mathematics in Computer Science (3,3)
Covers one or more topics common to mathematics and computer science. Possible topics include applications of abstract algebra to data security problems, digital systems processing, automata theory, asynchronous machines and petri nets, applications of algebra to computer programming, formal language theory, advanced numerical analysis and its theory of errors.
Prerequisites: 21:198:102 and 21:640:237 or 238, or permission of instructor.
|
28:198:482
Data Mining (3)
Covers the concepts
and principles of advanced data mining systems design; presents methods
for association and dependency analysis; classification, prediction,
and clustering analysis.
Prerequisite: 21&28:198:431.
|
28:198:485
Special Topics in Computer Science/Information Systems (3)
The study of new and/or advanced topics in an area of computer science not regularly covered in any other CIS course. The precise topics to be covered, along with prerequisites, are announced in the semester prior to the offering of the course. A student may register for no more than two semesters of special topics courses.
Prerequisites: Junior standing and/or departmental approval.
|
28:198:486
Topics in Computer Science/Information Systems (3)
A continuation of 28:198:485.
Prerequisites: Junior standing and/or departmental approval.
|
21:198:490
Software Engineering (3)
Software systems are built to perform a variety of tasks. This course covers the fundamentals of software systems, functional requirements analysis, design, development, testing, integration, implementation, operation and maintenance. Students, through course projects, will practice the systems analysis, design and development process. Writing intensive.
Prerequisites: 21:198:280, 21:198:288, and senior standing.
|
21:198:491
Computer Science Project (3)
An opportunity for students to integrate the knowledge and skills gained in previous computer science work into an individual research project. Involves investigation of current literature as well as computer implementation of either a part of a large program or the whole of a small system. Topic should be consonant with the emphasis of direction chosen by the students in their computer science studies. Before registering for this course, students must find a faculty member who agrees to act as their adviser, and students must have a written project proposal approved by their faculty adviser. The proposal must be submitted and approved in the prior semester, usually the third week of November or April.
Writing intensive. Prerequisites: 21:198:490 and senior standing.
|
21:198:493,494
Individual Studies in Computer Science (3,3)
Individual study for students interested in specialized study or research in computer sciences.
Prerequisite: Permission of instructor. No more than 3 credits may be taken from among 21:198:493,494, 495,496.
|
21:198:495,496
Internship in Computer Science or Information Systems (3,3)
Pursuit of a project of relevant educational value in an employment setting. Before registering for this course, students must find an employer and a faculty supervisor, and students must have a written internship proposal approved by the employer and faculty supervisor. Requires biweekly activity reports, a final report approved by employer and faculty supervisor, and a written evaluation by the employer.
Prerequisite: Approval of a proposal by faculty adviser. No more than 3 credits may be taken from among 21:198:493,494, 495,496.
|
|