This course provides an understanding of information systems and outlines the concepts of how IS can provide for competitive advantage. Different systems are presented. Design and implementation are discussed. Effect on business and society is studied.
Computer Science
This course is an introduction to concepts and terminology in computer programming. Topics include interface builders and problem solving techniques in various programming environments. Emphasis is placed on the basics of software design and on elementary applications to Mathematics and other disciplines.
This course is an introduction to concepts and terminology in computer programming. Topics include interface builders and problem solving techniques in various programming environments. Emphasis is placed on the basics of software design and on elementary applications to Mathematics and other disciplines.
This course is a continuation of COSC A211. Topics include object-oriented programming, software development, and data structures such as stacks, queues, trees, lists and the further exploration of the applications of programming to Mathematics and other disciplines.
This course offers an introduction to object-oriented software design techniques and to problem-solving methods. Particular focus is on the object-oriented paradigm. Procedural abstractions, data abstraction, and complex data structures are covered within the OO paradigm. Students also examine the major phases of software development and design.
This course mixes ethical theory with case study analysis to introduce students to ethics questions and theories that can help them to make ethically sound decisions in their professional, personal, and social experiences with computing. Starting with a few motivating current events, the course covers major ethical perspectives, and then introduces key ethical issues related to networked communications, intellectual property, information privacy, computer and network security, computer and software reliability, professional ethics, and workplace fairness, health, and the impacts of job automation.
A broad survey course intended for undergraduate students in any major: Students are provided with a road map for approaching this field from multiple standpoints—computer science, business administration, criminal justice, or other disciplines. Students learn the mechanisms needed to ensure the fundamentals of information security. The course will present security for personal systems, enterprise systems, and internet use. Students learn to delineate the many different types of threats and vulnerabilities, and to characterize noteworthy recent failures in information security.
Cybersecurity is as much a set of human practices as technical ones. Responsible handling of information assets—let alone ethical handling—demands a consistent approach whether an organization is a transnational corporation or a sole proprietorship. This course teaches students to implement security policies to support organizational goals. We discuss methodologies for identifying, quantifying, mitigating, and controlling security risks, as well as disaster recovery. Student also learn about laws, regulations, and standards relating to information security and privacy, and how they affect IT organizations.
This course introduces the concepts and terminology of databases. The concepts discussed during the lectures are illustrated by a number of hands-on exercises based on the Microsoft Access database software.
This course familiarizes students with basic aspects of computer graphics: Topics include Java 2D fundamentals, geometry, painting, stroking, interactivity, color theory, animation, and affine transforms.
This course introduces the topics of digital logic, digital systems, machine level representation of data, assembly level machine organization, memory system organization, I/O, and communication.
This course covers the basics of data structures, such as abstract data types, linked lists, stacks, queues, trees, and graphs. Applications to a number of problems, both practical and theoretical, are studied, including sorting, searching, and changing from recursion to iteration.
This course explores the concepts and technologies that are used in modern Internet systems, and provides the necessary skills and knowledge of software technologies needed for creating Internet/Web services. It is designed to expose students to web content presentation and generation technologies, programming, and building multi-tiered client/server web applications.
This course is a hands-on lab in “ethical hacking” and other forms of penetration testing for the purpose of finding and resolving vulnerabilities in computer systems and networks. The course is founded on absorbing the Mitre ATT&CK framework as a means of understanding adversarial behavior. Students perform penetration tests on specially configured target systems, which may include externally-managed cyber-ranges. Students also participate in bug bounties, and learn how to articulate and practice responsible disclosure of cybersecurity vulnerabilities. Upon completion, students will be prepared for the Certified Ethical Hacker qualification test.
The increasing dependence in everyday life on computer information systems has led to a corresponding increase in criminal activity through and against such systems. In addition, benign use of information systems has grown to the extent that such systems are now routinely part of discovery in civil and criminal legal proceedings. In this course, students will learn the techniques of digital forensics that are used to investigate cybersecurity incidents, legal disputes, and crimes. We will develop approaches that can be used on desktop personal computers and servers. The course will also emphasize the importance of controls and verification of digital evidence and the critical necessity of preserving and documenting a chain of custody for that evidence.
This course is a survey of languages and paradigms. Topics include parameters, data types, abstract data types, storage issues, static/dynamic attributes, and software abstractions. Emphasis is on the procedural paradigm with introduction and comparison to the object-oriented paradigm, the logic paradigm, and other paradigms.
Topics include an introduction to operating systems; process, memory, and storage management; protection and security; distributed systems; and case studies.
This course teaches the fundamentals of artificial intelligence, including problem solving techniques, search, heuristic methods, and knowledge representation. Topics include ALL programming, expert systems, and an introduction to natural language processing.
Machine learning is the science of getting computers to act without being explicitly programmed. Topics include effective machine learning techniques, implementation, and the theoretical underpinnings of learning and AI.
Topics include review of vector analysis and matrices; 3D wireframe pipeline framework; window to viewport transform; clipping algorithms; matrix description of 2D and 3D transforms; projections and perspective transforms; view transform; and some concepts in computational geometry.
This course is for individuals interested in becoming a game programmer, game designer, or game artist. Students learn how to make video games using the industry tools and practices of game development. The course takes students from intermediate programmers to designers of stunning 3D games. By the end of the course, students will have completed multiple hands-on projects and will be able to leverage an array of game development techniques to design and create their own video games.
This course is concerned with the internals and externals of database management systems, as well as data modeling techniques. Topics include features of database management systems (DBMS) and database users; data modeling; relational data models and languages; constraints and triggers; system aspects; object-oriented databases; logical query languages; data storage; query processing and optimization; transaction processing and concurrency control; and information integration.
Cryptography is a science of unpredictability and unintelligibility—hiding information in ways an adversary can neither anticipate nor discover. In this course, we will cover the various forms of cryptography: Symmetric, asymmetric, and one-way cryptography and review algorithms of each form. The course will address the use of cryptography in information security, not only for confidentiality, but also for data integrity. We will explore the mathematical principles behind deriving cryptographic algorithms and those behind validating them, including secure random-number generation. The course will present the applications of cryptography from the block ciphers of antiquity through the incipient field of quantum cryptography. The course will also focus on public-key infrastructure and blockchain/distributed ledger as important implementations of cryptography.
Cryptography is a science of unpredictability and unintelligibility—hiding information in ways an adversary can neither anticipate nor discover. In this course, we will cover the various forms of cryptography: Symmetric, asymmetric, and one-way cryptography and review algorithms of each form. The course will address the use of cryptography in information security, not only for confidentiality, but also for data integrity. We will explore the mathematical principles behind deriving cryptographic algorithms and those behind validating them, including secure random-number generation. The course will present the applications of cryptography from the block ciphers of antiquity through the incipient field of quantum cryptography. The course will also focus on public-key infrastructure and blockchain/distributed ledger as important implementations of cryptography.
Cryptography is a science of unpredictability and unintelligibility—hiding information in ways an adversary can neither anticipate nor discover. In this course, we will cover the various forms of cryptography: Symmetric, asymmetric, and one-way cryptography and review algorithms of each form. The course will address the use of cryptography in information security, not only for confidentiality, but also for data integrity. We will explore the mathematical principles behind deriving cryptographic algorithms and those behind validating them, including secure random-number generation. The course will present the applications of cryptography from the block ciphers of antiquity through the incipient field of quantum cryptography. The course will also focus on public-key infrastructure and blockchain/distributed ledger as important implementations of cryptography.
This course describes engineering processes and their application to the development of software.
This course explores the fundamental issues in computer networking. The course is intended to provide students with knowledge and understanding of basic concepts in networks and protocols. Frequently used protocols are used to illustrate the concepts and to provide insight into practical networks.
Students demonstrate the ability to apply mathematical foundations, algorithmic principles, and computer sciences theory in the modeling and design of computer-based programming. Emphasis is on one or more of the theoretical aspects of computer science.
This course focuses on the creative or productive efforts of one or more students. Students demonstrate the ability to use current skills and tools necessary for the application of computing practice.
A seminar is a supervised group of students sharing the results of their research on a common topic. A workshop is a supervised group of students participating in a common effort. Credits vary.
This experience is planned and arranged in conjunction with the student's major advisor. Students gain practical computing experience on projects outside a regular classroom setting.
Research projects focus on empirical or historical investigation, culminating in a written report. Credits vary.
Students work with a faculty member on a topic of their choosing. Credits vary.
Knowledge-Values Courses: Natural Science in Context
This course introduces students to the World Wide Web from the point of view of a user who surfs the Web, as well as from the point of view of an author who develops websites on the Internet. It describes web standards, networking protocols, and the latest development in various markup languages, such as HTML and XHTML. Students learn to create their own static web pages in part one, using features available from the markup languages. In part two, students use the knowledge learned in part one to incorporate dynamic content into their web pages, and learn to turn their information-only web pages into an interactive, goal-oriented website.