70 - Computer Science
This course offers an overview of computer systems, including how to interact with an operating system, and teaches students how to use productivity applications such as Word, Excel, PowerPoint, and Access.
3
The essentials of PowerPoint are covered.
1
This series of 100-level seminars focuses on various topics and is usually offered on weekends.
1-3
This course explores the field of computer science. It provides an overview of computer architecture, networking, data organization, information security, and computational theory. Students will be introduced to fundamental concepts underlying all of computing, such as algorithms, abstractions, and how computers represent numbers, text, images, and sound. Students will learn the basics of programming and computational problem solving.
3
Prerequisites
13-120 or 3 years of high school mathematics, including trigonometry.
A study of computer organization, data types, expressions, logical structures, subprograms (subroutines and functions), recursion, structured data types (arrays and records), dynamically allocated data, array-based lists, linked lists, stacks, queues, graphs, trees, sorting, and searching.
3
Prerequisites
70-200.
Students are introduced to the Unix operating system, including installation, configuration, administration, and on-line documentation. Networking with TCP/IP is presented, together with an introduction to apache (http server) and samba (file and printer server). Security controls in Unix and operating system virtualization are also discussed.
3
Prerequisites
70-200.
This course introduces computer programming using the Visual BASIC programming language with object-oriented programming designs and principles. The Microsoft .NET framework is used to develop applications. Emphasis is placed on event-driven programming methods, including creating and manipulating objects, classes, and using object-oriented tools such as the class debugger. An introduction to databases and ASP .NET applications is also discussed.
3
Prerequisites
70-200.
Students will learn to design and develop software using the object-oriented approach. Topics include encapsulation, inheritance, polymorphism, abstraction, and patterns. Students will learn how to use an SDK to develop desktop and web applications that provide data processing and visualization services. Students will also learn how to manage threads and networking connections in software they write.
3
Prerequisites
70-210.
Languages and technologies for programming and leveraging web-based computer services securely. Languages include PHP, Perl, Javascript, Java, Ruby, CSS, and HTML5. Technologies include relational databases, web services, Hadoop, and cloud computing platforms. This course teaches students how to develop useful applications using a variety of distributed data and programming models.
3
Prerequisites
70-200 or programming experience.
A study of concepts related to the storage, retrieval, backup, and recovery of data in file systems. Topics include the organization and processing of sequential access files, direct access files, and indexed sequential access files; RAID and disk spanning; the organization of data on a variety of storage devices; the disk boot process; identifying hidden data on a disk's Host Protected Area; analyzing various kinds of partitions; analyzing FAT, NTFS, Ext2, Ext3, UFS1, and UFS2 file systems; recovering data from deleted files and hidden file locations; and using open-source forensics tools to identify drive contents.
3
Prerequisites
70-200.
This course focuses on a specific topic in computer science that typically falls outside the established curriculum. This course enables the student to encounter content that engages an emerging question or subject in computer science. Topics will vary in accordance with areas of intense current interest.
1-3
Prerequisites
Check Course Schedule.
This study of computer organization covers the central processor unit, memory unit and I/0 unit, number systems, character codes and I/O programming. Programming assignments provide practice working with assembly language techniques, including looping, addressing modes, arrays, subroutines, and macros. Microsoft assembler is discussed and used for programming throughout the course.
3
Prerequisites
70-210.
An introduction to developing computer applications for collecting, analyzing, and visualizing scientific and mathematical data. Students will learn how to use mathematical computing environments like Matlab, Octave, and R as well as to write journal-style papers in LaTeX.
3
Prerequisites
70-200 or 70-211.
File storage structures, relational database management systems, entity relationship diagrams, relational algebra, relational calculus, SQL, database security, concurrency control, distributed and cloud storage solutions, coding database-supported web sites using PHP and XML.
3
Prerequisites
70-200.
A survey of concepts, facilities, and characteristics of contemporary computer operating systems that includes topics such as memory management, concurrent process control, multi-threading, security, virtualization, and parallelization.
3
Prerequisites
70-220.
This course exposes students to a variety of current programming languages that are not the focus of other courses in the major. The goal of the course is to increase students' programming skills while helping them develop good programming methodology and style. This course also gives students experience using code management systems and working on open-source programming projects.
3
Prerequisites
Credit or concurrent registration in
70-245.
This series of 300-level seminars focuses on various topics and is usually offered on weekends.
1-3
Video game design is an inherently interdisciplinary and technically challenging activity that requires proficiency in a broad range of topics and skills in the computer science curriculum. Video game developers must be excellent programmers, have a firm grasp of how to render and animate shapes and scenes, understand mathematical modeling of physical systems, be able to design and implement artificial intelligence systems, understand enough about hardware to optimize code for a variety of platforms, be able to plan and document complicated team projects, and appreciate the human factors issues involved in game design. And, of course, game developers must be creative and have an eye and ear for what makes for impactful game content. This course will cover each of these issues in an applied manner as the class builds basic but professional-looking video games from scratch. Students will work both individually and in teams and will be expected to document their work.
3
Prerequisites
70-245.
This course will expand on 70-410. Students will learn how to write 2D games for a variety of platforms and 3D games for PCs and popular consoles. They will use APIs and modeling tools for developing games in 3D and games for portable and other non-PC platforms. In addition, they will simulate physical systems and intelligent thought processes using vector math, mechanics and artificial intelligence. Work will be done in teams.
3
Prerequisites
70-410.
Programming for mobile devices requires knowledge of in a wide range of computer science topics including human-computer interaction, memory management, processing power, and communications technologies. This course explores video game development focusing on issues specific to mobile devices. Topics that will be addressed include user interfacing, hardware devices, telephony, GPS systems, notifications, and application frameworks for mobile devices. Students will develop using both simulators and actual mobile devices. Work will be done individually and in teams.
3
Prerequisites
70-245.
Fundamentals of computer and network security and information assurance. Topics include access control, authentication, trusted computing, software security and vulnerabilities, operating system security models, how various kinds of malware function, network security devices and architecture, computer hacking techniques and countermeasures, intrusion detection, cryptography, wireless security, and network security protocols.
3
Prerequisites
70-220 or consent of instructor.
This is a one-semester course focusing on cryptography and network security. Three areas of emphasis include: symmetric key encryption, public key encryption, and network security practices. The mathematical concepts underlying encryption algorithms will also be presented.
3
Prerequisites
70-200.
This course provides an overview of display devices and applications, point-plotting techniques, two-dimensional transformations, clipping and windowing, lighting, and three-dimensional techniques. Students are also introduced to interactive computer graphics, animation and graphics applications. Students explore these concepts using C++ and the OpenGL programming interface.
3
Prerequisites
70-210.
Methods, strategies, and tools for implementing software systems, particularly as part of a development team. Topics include the software development life cycle, Unified Modeling Language, software testing techniques, software security, open-source development, requirements gathering and documentation, maintenance, and basic software project management.
3
Prerequisites
70-245.
This course provides a study of the structures of selected programming languages related to ALGOL 60 and LISP. Emphasis is placed on semantics rather than syntax of the programming languages. Backus-Naur Form, recursion, parameter transmitting techniques, and an introduction to formal language theory is covered. Functional programming is also discussed. A term project is required.
3
Prerequisites
70-300 or
70-350.
Topics central to Artificial Intelligence are covered, including knowledge representation, the predicate calculus, goal-directed and data-directed search techniques, and rule-based expert systems. Two languages for problem solving is presented: LISP and PROLOG.
3
Prerequisites
70-210 and
13-210.
This course covers various topics, with areas of concentration on communications devices, protocols, standards, networking topologies, hardware, software, design, installation and setup, maintenance and security. The advantages, disadvantages and implementation issues of Microsoft Windows and Unix are explored.
3
Prerequisites
70-220.
This course is a continuation of Communications and Networking. It concentrates on implementing and administrating a diverse network of computers and other devices, including routers, switches, firewalls, network storage devices, printers, wireless devices, and a variety of services. This hands-on courses also gives students experience hacking and protecting such devices.
3
Prerequisites
70-480.
Students a analyze formal language theory and finite state automaton, finite automaton-based lexical analysis, Wirth-Weber relations and simple precedence grammar, recursive descent parsing, symbol table organization, semantic routine and semantic models, and code generation techniques.
3
Prerequisites
70-460.
This series of 400-level seminars focuses on various topics and is usually offered on weekends.
1-3
Students acquire practical related experience through placement in selected settings. Students submit an internship proposal in advance for approval, maintain a daily task log and submit a five-page written summary report at the conclusion of the internship. A minimum of 210 clock hours and an interview with the on-site supervisor are required.
3
Prerequisites
Junior or Senior status in the Computer Science major, GPA of 3.00 or higher and approval of the department chairperson.
This course is designed to meet the needs of Computer Science majors wishing to study an advanced topic not found in the curriculum.
1-3
Prerequisites
Consent of the department chairperson.