Computer Science Course Descriptions

Institutional Syllabi for all computer sciences courses can be found in the menu at the right.

  • CSCI 100: Essentials of Information Technology (3)
    Prerequisite: None

    Introduction to information technology. While this course satisfies the Technology Proficiency Requirement, its depth goes beyond simple proficiency and provides the student with a robust understanding of what is needed to use information and selected consumer technology effectively across a broad range of applications for personal, workforce, educational, and societal needs. An emphasis is placed on computer security topics that are relevant to even the most casual computer user. Course includes two hours of lecture and one lab period per week.

  • CSCI 150: Introduction to Programming (3)
    Prerequisite: ACT Math Score 19 OR Accuplacer Score 85 OR S in Math 099

    Introduction to computer programming. Students will learn to write object-oriented, structured, event-driven code through the use of a user-friendly programming language such as Visual Basic, Alice, or Microworlds.

  • CSCI 170: Computer Security (2)
    Prerequisite: None

    Covers the fundamentals of computer security. Students will conduct hands-on activities for securing both Windows and UNIX operating systems using virtual machines.

  • CSCI 207: Computer Science Ia: Fundamentals of Programming (3)
    Prerequisite: ACT mathematics score of 19 or more or Math 099 with a grade of S or Math 104 with a minimum grade of C- or appropriate score on Mathematics Placement Test.

    This course is the first course in the introductory programming sequence for computer science and business administration/management information science. Through the study of object design this course introduces the basics of graphical user interfaces, data types, control structures, methods, arrays, strings, and files.

  • CSCI 208: Computer Science Ib: Object-Oriented Programming (1)
    Prerequisite: Completion of CSCI 207 with a minimum grade of C-.

    This course is the second course in the introductory programming sequence for computer science. The course emphasizes object-oriented programming through a study of encapsulation, polymorphism, coupling, cohesion, composition, aggregation, object-oriented design, interfaces, access control, and inheritance. Course content also includes an introduction to lists, wrappers, abstract, and final classes as well as the classic model/view/controller and singleton design patterns.

  • CSCI 209: Computer Science II: Advanced Programming (4)
    Prerequisite: Completion of CSCI 208 with a minimum grade of C-

    This course is the third course in the introductory programming sequence for computer science. The course emphasizes classic data structures and algorithms. Concepts covered include graphs, trees, recursion, complexity classes, sort and search routines, algorithm design, implementation and analysis, threading, generic programming, and streams.

  • CSCI 210: Programming for Mathematics, Science, and Engineering (3)
    Prerequisite: MATH 106 with a minimum grade of C OR MATH 107 with a minimum grade of C.

    Covers the fundamentals of programming in a language widely used in mathematical, scientific, and engineering disciplines. The programming language may vary each time the course is offered. Examples of languages that may be used in the course include C++, Python, and MatLab.

  • CSCI 215: Networking and Security (3)
    Prerequisite: CSCI 170 minimum grade of C-

    Introduces the structure, implementation, and theoretical underpinnings of computer networking and the applications that have been enabled by that technology. Topics include the fundamentals of communications, network management, and wireless computing. An emphasis is placed on network security issues.

  • CSCI 216: Networking and Security Laboratory (2)
    Prerequisite: CSCI 215 minimum grade of C- or concurrent enrollment in CSCI 215 or CSCI 345 minimum grade of C- or concurrent enrollment in CSCI 345.

    Students will implement secure network services. Students will also practice various types of hacking attacks and study defenses against them. Virtual machines will be used to simulate networks.

  • CSCI 245: Web Programming and Security (4)
    Prerequisite: Passing the ASU Technology Proficiency Examination OR Bus 120 minimum grade C- OR CSCI 100 minimum grade C- OR CSCI 208 minimum grade C-

    Covers basic aspects of the internet, focusing on web programming and application layer computer security. No programming background is required. Students will learn how to write a web application using both client- and server-side scripting languages. Students will also participate in activities involving hacking and defending web applications.

  • CSCI 250: Human Computer Interaction(3)
    Prerequisite: CSCI 208 minimum grade C-

    Presents a comprehensive introduction to the principles and techniques of human-computer interaction.

  • CSCI 275: Professional Practice (1)
    Prerequisite: ((CSCI 245 minimum grade C-) OR (CSCI 215 and CSCI 216 with a minimum grade C-)) AND (Instructor approval of professional work experience plan)

    Involves work as a computer technician at a business or non-profit as well as studying for and taking an approved professional certification. Professional work experience must be documented and approved prior to enrollment in the course.

  • CSCI 301: Software Development and Professional Practice I (2)
    Prerequisite: CSCI 308 minimum grade C- and CSCI 250 minimum grade C-

    Combines a range of topics integral to the design, implementation, and testing of medium-scale software systems including fundamental design patterns, software development processes and project management. Students will form teams and create a design for a medium scale software system. In addition to material on software architecture and engineering, this course also includes material on professionalism and ethical responsibilities in software development and design.

  • CSCI 302: Software Development and Professional Practice II (2)
    Prerequisite: CSCI 301 minimum grade C-

    The follow up course for CSci 301 in which students will implement, with their team, a software design from CSci 301. Students will experience project management and software development processes directly. The course will focus on programming techniques and the last stages of the software development process, including design, validation, evolution, human computer interaction, using API's, software tools and software development environments.

  • CSCI 308: Architecture and Operating Systems (3)
    Prerequisite: CSCI 209 minimum grade C-

    Introduction to the concepts of computer architecture and operating systems, including assembly level machine organization, representation of data, memory systems, bus principles, digital logic, microprograms, functional machine architecture, RISC, CISC, parallel architectures, an overview of operating systems and operating systems principles, concurrency, and memory management.

  • CSCI 315: Users Services Practicum (3)
    Prerequisite: CSCI 150 minimum grade C- OR CSCI 208 minimum grade C- OR CSCI 210 minimum grade C-

    Assisting computer users with application and instructional software, aiding peers with program development and debugging, and managing day-to-day demands of the computer lab. The course is graded P/F.

  • CSCI 320: Advanced Internet (3)
    Prerequisite: CSCI 245 minimum grade C- AND ( CSCI 150 OR CSCI 210 OR CSCI 208 – minimum grade C-)

    Advanced topics and hands-on experience with hardware and software systems used for providing internet services in industry, education and government. The course will survey systems and service options, examine how to establish and maintain services, and explore implications of new technology for future internet and intranet systems.

  • CSCI 325: Algorithm Design and Analysis(3)
    Prerequisite: CSCI 209 minimum grade C- and MATH 250 minimum grade C-

    Introduces formal techniques to support the design and analysis of algorithms, focusing on both the underlying mathematical theory and practical considerations of efficiency. Topics include asymptotic complexity bounds, techniques of analysis, algorithmic strategies, and an introduction to automata theory and its application to language translation.

  • CSCI 330: Artificial Intelligence and Machine Learning (2)
    Prerequisite: CSCI 209 minimum grade C- AND co-requisite of Math 340.

    Provides both a brief overview of the basics of artificial intelligence and machine learning, and an in-depth investigation of selected hot topic(s) in the field. The course will examine basic and advanced search techniques, knowledge representation, machine learning and data mining, natural language processing, and historical and philosophical issues regarding artificial intelligence. The course is a project-based course that will involve implementing and experimenting with open-source machine-learning software.

  • CSCI 345: Net-centric Computing (3)
    Prerequisite: CSCI 208 minimum grade C-

    Introduces the structure, implementation, and theoretical underpinnings of computer networking and the applications that have been enabled by that technology. Topics include the fundamentals of communications, network management, wireless computing, and recent trends in network communications. An emphasis is placed on network security issues. Aspects of cryptographic programming are covered including secure communication with DES, key exchange and Diffie Hellman protocol, digest algorithms, and SSL.

  • CSCI 360: Database Management Systems
    Prerequisite: CSCI 208 minimum grade of C-

    Introduces the concept and techniques of database systems both from a programming and system administration perspective.

  • CSCI 410: Computer Graphics and Multimedia(3)
    Prerequisite: CSCI 209 minimum grade C- AND MATH 321 minimum grade C-

    Offers an introduction to computer graphics, which has become an increasingly important area within computer science. Computer graphics, particularly in association with the multimedia aspects of the World-Wide-Web, have opened up exciting new possibilities for the design of human-computer interfaces. The purpose of this course is to investigate the principles, techniques, and tools that have enabled these advances.

  • CSCI 436: Research in Computer Science (3)
    Prerequisite: Permission of Instructor

    An independent research course. The student will work with a professor on a research project either designed by the student or the professor. The student's research must result in a professional quality paper or project and a presentation before a group of peers and professors.

  • CSCI 445: Distributed Computing (3)
    Prerequisite: CSCI 308 minimum grade C- AND CSCI 345 minimum grade C-

    Introduction to distributed programming and application development. Covers the principles and practice of distributed system architectures and models, interprocess communication, distributed algorithms, concurrency, security, application programming interfaces, and system performance.