Computer Science/Information Technology (CSIT)

CSIT 100  Introduction to Computer Concepts  (3 credits)

An introduction to the skills, concepts, and capabilities necessary to effectively use information technology across the curriculum through computer applications. Not for mathematics major elective credit or computer science elective credit. Meets Gen Ed - Computer Science.

CSIT 102  New Student Experience in Computing and Campus Society  (1 credit)

Introduces students to the University, the Department of Computer Science and the culture of higher education. Students learn about campus resources and activities, the discipline of computer science, the hardware and software used in the discipline, careers for computer scientists, and development of good study skills. There is also emphasis on issues related to health, wellness, diversity, ethics, and a multicultural environment.

CSIT 104  Python Programming I  (3 credits)

Introduction to basic computational concepts; legal and ethical issues in computing and information technology. Main focus- introduction to the Python programming language; syntax and semantics of the Python programming language, basic algorithms and problem-solving skills using Python.

CSIT 105  Honors Seminar in Computing  (3 credits)

Introduction to the theory, discipline, philosophy and applications of computing. The effect of computing upon the individual, the society, and the environment. Use of application tools including word processing, spreadsheets, data bases, and communications. Meets Gen Ed - Computer Science. Mutually Exclusive with HONP 105.

CSIT 107  Computers and Society  (2 credits)

The impact of the digital computer on modern society. Use of application packages and computer language for problem solving. Computer organization. History of computation. Not for math/computer science majors. Equivalent course CMPT 107 effective through Summer 2019.

CSIT 111  Fundamentals of Programming I  (3 credits)

Prerequisite(s): MATH 111, with a grade of C- or higher, as a prerequisite or corequisite. Basic theory of digital computers. Syntax and semantics of a programming language. Algorithms: logic, design, testing and documentation. Meets Gen Ed - Computer Science.

CSIT 112  Fundamentals of Programming II  (3 credits)

Prerequisite(s): MATH 111 and CSIT 104 and CSIT 111 with a grade of C- or higher. Continuation of CSIT 111. Algorithm development involving user functions; subroutines, recursions, structures file manipulation. Meets Gen Ed - Computer Science.

CSIT 114  Python Programming II  (3 credits)

Prerequisite(s): CSIT 104 with a grade of C- or higher. This is an intermediate-level Python programming course. It is a continuation of CSIT 104. It will cover topics such as functions, modules, classes, Object-Oriented Programming, and exceptions in Python. It will also cover important advanced topics in the Python programming language.

CSIT 212  Data Structures and Algorithms  (3 credits)

Prerequisite(s): CSIT 112 with a grade of C- or higher; and MATH 122 or AMAT 120 may be taken as prerequisite or corequisite. Creation and manipulation of in-memory data structures including graphs, lists, queues, sets, stacks and trees; searching, sorting and other algorithms for in-memory data structures. Meets the Graduation Writing Requirement for majors in Computer Science and Data Science.

CSIT 213  Data Structures and Algorithms in Python  (3 credits)

Prerequisite(s): CSIT 114 and MATH 122 with a grade of C- or higher. Creation and manipulation of in-memory data structures including graphs, lists, queues, sets, stacks and trees; searching, sorting and other algorithms for in-memory data structures. File, file structures and external sorting. The programming language to be used is Python.

CSIT 230  Computer Systems  (3 credits)

Prerequisite(s): CSIT 112 or CSIT 114 with a grade of C- or higher; and MATH 122 with a grade of C- or higher. This course aims to introduce the fundamental aspects of computer systems from the hardware and software point of view. Students will be exposed to the principles of computer architecture and organization within the framework of digital design and Assembly language. Recent modem computer technologies will also be stressed.

CSIT 231  Systems Programming  (3 credits)

Prerequisite(s): CSIT 230 with a grade of C- or higher. This course covers in detail the core principles and foundations of computer systems programming. In-depth discussion on system programming techniques in POSIX compliant systems will be given. Students will be able to develop sophisticated and efficient system-level software in C programming language with debugging and performance optimization tools.

CSIT 237  Introduction to Undergraduate Inquiry  (1-3 credits)

Prerequisite(s): CSIT 112 with a grade of C- or higher. Individual research in areas of computer science, information technology or science informatics agreed upon by the student and the instructor. The results of the research will be a basis of a poster presentation to be given by the student. Students must not accumulate more than 6 credits total in courses CSIT 297, CSIT 497, CSIT 498, MATH 497, MATH 498.

CSIT 270  Discrete Mathematics  (3 credits)

Prerequisite(s): CSIT 111 with a grade of C- or higher; and AMAT 120 or MATH 122 may be taken as prerequisite (with a grade of C- or higher) or corequisite. The structures include sets, graphs, digraphs, trees, networks, lattices, matrices, semigroups and groups. Many practical business and scientific problems can be posed and solved by the use of these structures.

CSIT 274  Multimedia Computing  (3 credits)

Prerequisite(s): CSIT 111 or CSIT 104 with a grade of C- or higher. An introduction to computer multimedia, including video, audio, and graphics encoding creation and manipulation. Understanding of the variety of audio, image and video formats; using media creation tools. The course also covers streaming and multimedia in the world wide Web. Equivalent course CSIT 358 effective through Fall 2020.

CSIT 275  Introduction to R Programming  (3 credits)

Prerequisite(s): MATH 122 with a grade of C- or higher. This course provides a basic introduction to R programming language, probability distribution and statistical models. Topics include various data structures of R, object‑oriented programming, function, loop, condition, file I/O, probability distribution and hypotheses testing. The R language will be used for programming assignments.

CSIT 288  Introduction to Cognitive Science  (3 credits)

Prerequisite(s): ANTH 100 or CSIT 111 or LNGN 210 or PHIL 100 or PSYC 101 with a grade of C- or higher. An introduction to the multidisciplinary field of cognitive science. Topics include: the mind-body problem, thought as computation and the computer model of the mind, the role of representation in mental activity. Emphasis will be upon the methodological approaches found in artificial intelligence, cognitive psychology, cognitive anthropology, cognitive neuroscience, linguistics, and philosophy. Equivalent course CMPT 288 effective through Summer 2019. Mutually Exclusive with LNGN 288, PHIL 288, and PSYC 288.

CSIT 296  Special Topics in Programming Languages  (1 credit)

Prerequisite(s): CSIT 212 and CSIT 230 with a grade of C- or higher. An introduction to a selected programming language with a view to learn the most important structures in that language. Each time the course is offered only one programming language will be taught, but the language could vary from one semester to another. The course could be taken more than once by the same student, provided the languages are different. May be repeated for a maximum of 5 credits.

CSIT 313  Fundamentals of Programming Languages  (3 credits)

Prerequisite(s): CSIT 212 and CSIT 230 with a grade of C- or higher. Syntax and semantics of modern programming languages with emphasis on programming in the large, functional, logic, and object-oriented paradigms. Common threads found in both imperative and non-imperative languages discussed.

CSIT 315  Software Engineering I  (3 credits)

Prerequisite(s): CSIT 212 and CSIT 230 with a grade of C- or higher. Utilization of software engineering principles and techniques for the specification, analysis, and design of high-quality complex software systems including both technical and non-technical aspects.

CSIT 317  System Analysis and Design  (3 credits)

Prerequisite(s): CSIT 112 with a grade of C- or higher. A major project includes forms design, sequential files, files, merge, sort, and editing programs. Equivalent course CMPT 382 effective through Summer 2019.

CSIT 321  Introduction to Numerical Computing  (3 credits)

Prerequisite(s): CSIT 111 with a grade of C- or higher and MATH 221 with a grade of C- or higher. Fundamentals of numerical computation, with emphasis on basic algorithms and their efficient implementation: appropriate treatment of theoretical bases. Topics include floating point arithmetic, roundoff error and propagation, numerical solution of nonlinear equations, interpolation and approximation, and numerical integration. The Fortran language will be taught and used in programming assignments. Equivalent course CMPT 363 effective through Summer 2019.

CSIT 335  Introduction to Human-Computer Interaction (HCI)  (3 credits)

Prerequisite(s): CSIT 212 and CSIT 230 with a grade of C- or higher. Course content will include: science-based theories, models, and studies; and user interface design and development. Graphical user interfaces for desktop, web, and mobile devices. Conduct task analyses, usability tests, expert reviews, and continuing assessments of working products by interviews, surveys, and logging. Apply design processes and guidelines to develop professional quality.

CSIT 336  Game Development  (3 credits)

Prerequisite(s): CSIT 212 or CSIT 274 with a grade of C- or higher. This course will introduce the fundamental game production concepts and the scripting skills to develop 3D interactive game in Unreal. Students will learn how to create, modify and integrate assets including sounds and 3D models. Students will also learn how to publish their games to app stores and web. Some C++ programming experiences are required.

CSIT 337  Internet Computing  (3 credits)

Prerequisite(s): CSIT 112 and CSIT 230 with a grade of C- or higher. This course discusses and investigates the current web tools and technologies that are used in web site design. Focus will be on the markup languages of XHTML and XML; Dynamic HTML; Client side programming language JavaScript; Server side programming, Servlets, JavaServer pages and ASP.

CSIT 338  Advanced Game Development  (3 credits)

Prerequisite(s): CSIT 212 or CSIT 274 with a grade of C- or higher. This course will introduce the fundamental game production concepts and the scripting skills to develop 3D interactive game in Unity. Students will learn how to create, modify and integrate assets including sounds and 3D models. Students will also learn how to publish their games to app stores and web. Some C# and .Net programming experiences are required.

CSIT 339  Python Programming for Gaming  (3 credits)

Prerequisite(s): CSIT 212 or CSIT 213 or CSIT 274. This course introduces students to game programming concepts and theories through 2D game development using Python platforms. Students will learn and analyze game mechanics that are utilized in several game-genres and reproduce them. The course will also discuss Python scripting for 2D/3D Animation.

CSIT 340  Computer Networks  (3 credits)

Prerequisite(s): CSIT 212 and CSIT 230 with a grade of C- or higher. An introduction to principles and practice of computer networking, with emphasis on the Internet. The layered approach to network design. The structure and components of computer networks, packet switching, layered architectures, TCP/IP, physical layer, error control, window flow control, local area networks (Ethernet, Token Ring; FDDI), network layer, congestion control, and quality of service.

CSIT 345  Operating Systems  (3 credits)

Prerequisite(s): CSIT 212 and CSIT 230 with a grade of C- or higher. Process Management. Process synchronization and deadlock prevention. Memory Management. Interrupts processing. I/O Control.

CSIT 355  Database Systems  (3 credits)

Prerequisite(s): CSIT 212 or CSIT 213 with a grade of C- or higher; and CSIT 230 with a grade of C- or higher; and CSIT 270 with a grade of C- or higher. A comprehensive collection of database organizations and design tools: file organizations and evaluations, database structures, schemata and implementations. Database security, operations and management.

CSIT 356  Introduction to Data Science  (3 credits)

Prerequisite(s): CSIT 212 or CSIT 213 with a grade of C- or higher. This course will introduce students to the field of Data Sciences. It will introduce students to the latest concepts in Data Sciences and prepare these student for working with data spanning different disciplines. These concepts include understanding data and data modeling, computational techniques for analyzing data, data visualization, data quality and the basics of security issues regarding data.

CSIT 357  Artificial Intelligence  (3 credits)

Prerequisite(s): CSIT 212 and CSIT 270 with a grade of C- or higher. A general, comprehensive coverage of the main areas constituting the field of artificial intelligence, introduction of computer vision, natural language processing (NLP), pattern recognition and neural networks.

CSIT 359  Data Visualization  (3 credits)

Prerequisite(s): CSIT 213 with a grade of C- or higher. This course provides fundamental exploratory techniques to summarize and visualize data sets. R and Python programming language will be used to learn how to manage datasets and use plotting system. Methods to visualize data sets of one, two and multiple variables with examples will also be presented. May be repeated for a maximum of 6 credits.

CSIT 365  Information Assurance and Security  (3 credits)

Prerequisite(s): CSIT 212 and CSIT 340 with a grade of C- or higher. This course is designed to introduce students to information security principles. Topics covered in the course will include the need for security, risk management, security technology, cryptography, and physical security. Security policies and legal/ethical issues will also be covered.

CSIT 379  Computer Science Theory  (3 credits)

Prerequisite(s): CSIT 212 and MATH 122 with a grade of C- or higher. Formal languages, theory, automata, Turing Machines. computability, the Church-Turing thesis, decidability, time and space complexity, and NP-completeness.

CSIT 414  Compiler Construction  (3 credits)

Prerequisite(s): CSIT 379 with a grade of C- or higher. Introduction to the concepts and techniques used in the description of programming languages and in the construction of compilers. Topics include Language Theory, Scanners, Parsers, Semantics, Code Generation.

CSIT 415  Software Engineering II  (3 credits)

Prerequisite(s): CSIT 315 with a grade of C- or higher. This course utilizes software engineering principles and techniques for the implementation, testing and maintenance of high-quality complex software systems, as designed in a previous course (CSIT 315).

CSIT 416  IT Project Management  (3 credits)

Prerequisite(s): CSIT 355 with a grade of C- or higher. This course develops a foundation of concepts and solutions that supports the planning, scheduling, controlling, resource allocation, and performance measurement activities required for successful completion of a project.

CSIT 429  Parallel and Distributed Computing  (3 credits)

Prerequisite(s): CSIT 345 with a grade of C- or higher. An overview of a variety of parallel and distributed architectures ranging from multi-core, and symmetric multiprocessors to clusters and grids. The appropriate programming techniques for these architectures, such as threads and message passing. Parallelization of sequential algorithms for common problems. Speedup analysis.

CSIT 430  Databases for Internet Applications  (3 credits)

Prerequisite(s): CSIT 337 with a grade of C- or higher. Introduction to fundamentals of databases with emphasis on Web-based applications. Database-related technologies for Internet applications. Practical projects for creating a database-driven application on the Web.

CSIT 431  Introduction to Robotics  (3 credits)

Prerequisite(s): CSIT 340 or CSIT 355 with a grade of C- or higher. An overview of the fundamental principles in autonomous robotics from the aspect of algorithms and computation. Includes theoretical concepts in robotic technology (inverse kinematics. actuation, sensing, manipulation, control and motion planning), complemented by hands on work with algorithms for robot communication and sensing. Investigation of current directions in robotics applications and ethics of robotics.

CSIT 432  Systems Administration  (3 credits)

Prerequisite(s): CSIT 340 with a grade of C- or higher. The administration and management of Linux Computer Systems. Includes installation; user/process management; configuration of services and device handling; introduction to C; (i) syntax of functions and basic structure, keywords, expressions, variables, scoping and lifetime, types, and type conversion, arrays and pointers, run-time stack, function invocation, parameter passing, passing arrays, memory & segments (dynamic, static, automatic), dynamic allocation, (ii) compilation process; preprocessor, compiling object code, static and dynamic linking; file I/0, Streams, Reading and Writing files, command line options, combining using pipes and I/0 redirection, (iii) Profiling tools (Gprof), Binary Tools (LD, LDD, NM), Debugging (GDB, DDD); Basic Shell scripting, (iv) Build Tools (Make).

CSIT 437  Web Services  (3 credits)

Prerequisite(s): CSIT 337 with a grade of C- or higher. Distributed Information Systems and Middleware Enterprise Application Integration and web technologies, web services and related technologies, real-world examples REST architectural style, Web 2.0, coordination and composition.

CSIT 440  Principles of Data Mining  (3 credits)

Prerequisite(s): CSIT 355 with a grade of C- or higher. Introduction to Data Mining concepts, algorithms, and applications. Understanding the process of discovering new information in existing, large data collections. Exploration of large data sets and hands-on introduction to the discovery of interesting patterns.

CSIT 445  Computer Architecture  (3 credits)

Prerequisite(s): CSIT 345 with a grade of C- or higher. Introduction to chip technology, microprocessors, microcomputers, architecture, instruction sets and programming of microcomputers, and other bus-oriented computers.

CSIT 450  Text Management  (3 credits)

Prerequisite(s): CSIT 430 with a grade of C- or higher. Introduction to managing data in text form. Includes creating, manipulating and data mining documents and data warehouses, evaluating data quality and investigating new techniques in managing World Wide Web data.

CSIT 451  Mobile Computing  (3 credits)

Prerequisite(s): CSIT 355 with a grade of C- or higher. Course content will include an introduction into mobile device programming including environment basics, application basics, creating user interfaces, how to deal with data, how to accommodate different devices, basic widgets and more advanced user interface parts for multimedia and maps, and app publication.

CSIT 452  iOS App Development  (3 credits)

Prerequisite(s): CSIT 355 with a grade of C- or higher. This course will introduce iOS App development using Swift. Main topics include iOS development tools, basic programming concepts using Swift, interactive iOS App design using SwiftUI framework, advanced tools such as machine learning and augmented reality for iOS Apps, as well as industry best practices. Through a series of practical projects, students will learn how to create apps from scratch, publish it to Apple Store, along with how to monetize mobile Apps.

CSIT 455  Machine Learning  (3 credits)

Prerequisite(s): CSIT 356 with a grade of C- or higher; STAT 330 or STAT 401. Machine learning is a broad field focusing on finding patterns in data to get computers to solve complex problems. It includes interdisciplinary techniques such as computer science, statistics and linear algebra. This course is an introductory undergraduate course in machine learning. It will briefly cover the fundamental principles, models and algorithms for machine learning. Applicable techniques will be introduced to familiarize students how to solve the real-world problem using machine learning.

CSIT 456  Advanced Techniques in Data Science  (3 credits)

Prerequisite(s): CSIT 355 or CSIT 356 with a grade of C- or higher. This course looks to familiarize students with the standard industry practices for creating complex, data supporting systems. It will look to give students applied, hands-on skills associated with advanced data management, such as working with distributed systems through industry-current tools, developing and using complex data analysis and processing frameworks, applying known data quality and security techniques and implementing custom data visualization strategies with various programming languages and industry-current tools.

CSIT 460  Computer Security  (3 credits)

Prerequisite(s): CSIT 340 with a grade of C- or higher. An overview of the fundamental problems of computer security, followed by an in-depth analysis of the current solutions including encryption, public key schemes, testing and analyzing current network security and internet architecture based on security considerations. Meets the Graduation Writing Requirement for majors in Information Technology.

CSIT 473  Image Processing  (3 credits)

Prerequisite(s): CSIT 379 and AMAT 240 with a grade of C- or higher. In this course, image analysis and processing techniques are introduced. One-dimensional and two-dimensional theories for image processing are discussed. Topics include image representation, convolution, equalization, image filtering, segmentation, compression, morphological and medical imaging.

CSIT 474  Computer Graphics  (3 credits)

Prerequisite(s): CSIT 379 and AMAT 240 with a grade of C- or higher. An introduction to computer graphics, including the algorithms to generate two-dimensional and three-dimensional graphical pictures. An overview of interactive graphics and graphics devices.

CSIT 475  Scientific Computing  (3 credits)

Prerequisite(s): CSIT 379 with a grade of C- or higher. Course content includes floating-point computations, numerical error analysis, interpolation, integration, solution of systems of linear equations, optimization, and initial-value problems of ordinary differential equations. Algorithms will be implemented using Matlab or numerical recipes in C. A variety of scientific examples will be used to illustrate scientific computing concepts.

CSIT 480  Collaborative Game Development Project  (3 credits)

Prerequisite(s): CSIT 336 or CSIT 338 with a grade of C- or higher; or ARIL 325. This is a capstone game development project which aims to design and develop a 3D game in a popular game engine by a team with various expertises.

CSIT 490  Honors Seminar in Computer Science  (3 credits)

Prerequisite(s): CSIT 345 with a grade of C- or higher. Topics not usually covered within standard computer science courses. A written and an oral report are required.

CSIT 491  Cooperative Education in Computer Science and Information Technology  (3-8 credits)

Prerequisite(s): CSIT 340 with a grade of C- or higher; and departmental approval. The application of the conceptual ideas from Computer Science and Information Technology in a real-life work environment. The co-op experience is a semester of full- or part-time work under the guidance of a workplace supervisor and a faculty advisor. At most three credits may be applied towards the Computer Science or Information Technology majors.

CSIT 495  Special Topics in Undergraduate Computer Science  (1-3 credits)

Prerequisite(s): CSIT 313 or CSIT 335 or CSIT 337 or CSIT 340 or CSIT 345 or CSIT 355 or CSIT 357 or CSIT 379 with a grade of C- or higher. Study of specialized topics in computer science. May be repeated once for a maximum of 6 credits as long as the topic is different.

CSIT 497  Undergraduate Research I  (1-3 credits)

Prerequisite(s): CSIT 313 or CSIT 315 or CSIT 335 or CSIT 337 or CSIT 340 or CSIT 345 or CSIT 355 or CSIT 357 or CSIT 379 with a grade of C- or higher. Individual research in areas of computer science and information technology, agreed upon by the student and the instructor. The results of the research will be a basis of a seminar or colloquium to be given by the student. Students must not accumulate more than 6 credits total in courses CSIT 497 and CSIT 498.

CSIT 498  Undergraduate Research II  (3 credits)

Prerequisite(s): CSIT 497 with a grade of C- or higher; and departmental approval. Individual research in areas of computer science and information technology, agreed upon by the student and the instructor. The results of the research will be a basis of a seminar or colloquium to be given by the student. Students must not accumulate more than 6 credits total in courses CSIT 497 and CSIT 498.

CSIT 500  Computer Science Principles  (3 credits)

CS Principles will introduce students to computational thinking and problem solving. Students in this course will address computer science concepts including problem solving skills, data abstraction, data communication and the Internet, algorithms, and global perspectives of computing. The intent of this course is to both introduce computer science to students as well as help students in teacher programs prepare topics with regards to the advanced placement Computer Science exams.

CSIT 501  Java Programming  (4 credits)

An introduction to programming using a structured high level language, design of algorithms, character strings, recursion, data structures, numerical computing. May not be used for credit by Mathematics or Computer Science majors.

CSIT 502  Computer Systems Principles  (4 credits)

Prerequisite(s): CSIT 501 or CSIT 505 may be taken as prerequisite or corequisite. Introduction to assembly language, addressing techniques, subroutine linkage, input/output and macros. Introduction to computer organization including memory, logic design and computer architecture. May not be used for credit by Mathematics and Computer Science majors.

CSIT 503  Data Structures  (4 credits)

Corequisite(s): CSIT 504. Prerequisite(s): CSIT 501. A continuation of CSIT 501. Design and analysis of data structures, pointers, linked representations, linear lists, trees, storage systems and structures, database design.

CSIT 504  Discrete Mathematics in Computing  (4 credits)

Sets, relations, functions, graphs, trees, propositional calculus, induction and recursion, applications to computer science. May not be used for credit by Mathematics or Computer Science majors.

CSIT 505  Python Programming  (4 credits)

Restriction(s): Graduate status or Instructor's permission. This course covers both the fundamentals and advanced techniques of Python programming. The basic concepts including data types, expressions, classes, flow control, and debugging will be discussed. Furthermore, this class will introduce some advanced skills such as object‑oriented design, functional design, and multiple data structures such as list, dictionary, dataframe, and series. In addition, advanced topics of data science in Python will be covered. Students will learn related data structures and libraries for data collecting, cleaning, analysis, and visualization.

CSIT 506  Data Structures with Python  (4 credits)

Prerequisite(s): CSIT 505 and CSIT 504 and Permission from Graduate Program Coordinator. This course will teach the creation and manipulation of in-memory data structures including lists, queues, trees, stacks, heaps, hash tables, graphs, search trees, etc. It will cover searching, sorting and other algorithms for in-memory data structures. Data structures related to external data storage and retrieval will also be covered. It will also cover the design, implementation, and analysis of algorithms. The programming language to be used is Python.

CSIT 513  Systems Software Design  (3 credits)

Prerequisite(s): CSIT 545. Restriction(s): Departmental approval for students with Deferred or Conditional status. Assemblers, macroprocessors, linkers and loaders, introduction to compilers and run facilities. Required of majors. Equivalent course CMPT 581 effective through Summer 2019.

CSIT 514  Compiler Construction  (3 credits)

Prerequisite(s): CSIT 513. Restriction(s): Departmental approval for students with Deferred or Conditional status. Introduction to the formal description of programming languages, the theory of parsing, and the concepts and techniques used in the construction of compilers.

CSIT 515  Software Engineering  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Principles and methods for the analysis, design, implementation, testing, and verification of software systems. Topics include requirements analysis, domain analysis, implementation, testing, verification, and software management.

CSIT 517  Structured System Design and Analysis  (3 credits)

Prerequisite(s): CSIT 555. Restriction(s): Ddepartmental approval for students with Deferred or Conditional status. A study of the design of large scale computer systems relative to the constraints imposed by hardware, software and particular types of applications. Recent work in automated system design will be discussed. Equivalent course CMPT 593 effective through Summer 2019.

CSIT 518  Fundamentals of Programming Languages  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. A comparative approach to modern programming languages with emphasis on non-imperative languages, and an introduction to parallel languages. Equivalent course CMPT 588 effective through Summer 2019.

CSIT 527  Principles of Secure Programming  (3 credits)

Prerequisite(s): CSIT 501 and CSIT 503. This course teaches the essentials of developing secure software in accordance with the most current industry standards. It is designed to give students practical experience using security principles and techniques. Students will engage in programming real‐world projects where they design, analyze, implement and test practical codes. Topics covered include: secure designs, risk analysis, threat modeling, defensive coding, penetration testing, fuzzing, static analysis, and security assessment.

CSIT 528  Statistics for Data Science  (3 credits)

Prerequisite(s): CSIT 504. Learn basic statistical concepts and tools for modern data science, focusing on an intuitive nderstanding concepts and methodologies that help us make sense of vast and complex data ntroductory statistical and critical thinking, including descriptive statistics, probability, sampling distributions, regression, model selection, cross-validation and bootstrap.

CSIT 529  Parallel and Distributed Computing  (3 credits)

Prerequisite(s): CSIT 545 and CSIT 571. This course provides a study of the state-of-art of parallel processing algorithms and architectures. Parallel processing uses multiple processors working together in a synchronized fashion to solve large problems fast.

CSIT 531  Robotics  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Fundamental principles in robotics from the aspect of algorithms and computation. Includes fundamentals in robotic technology (inverse kinematics, actuation, sensing, manipulation, control, and motion planning), algorithms for robot communication and sensing, and current directions in robotics applications.

CSIT 532  Introduction to Artificial Intelligence  (3 credits)

Prerequisite(s): CSIT 571. Restriction(s): Departmental approval for students with Deferred or Conditional status. An introduction to artificial intelligence including representations of knowledge, problem solving, games, heuristics and backtracking, expert systems, theorem proving, the language LISP and PROLOG. Equivalent course CMPT 578 effective through Summer 2019.

CSIT 535  Human-Computer Interaction (HCI)  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Course content will include: science-based theories, models, and studies; and user interface design and development. Graphical user interfaces for desktop, web, and mobile devices. Assess usability by quantitative and qualitative methods. Conduct task analyses, usability tests, expert reviews, and continuing assessments of working products by interviews, surveys, and logging. Apply design processes and guidelines to develop professional quality user interfaces. Build low-fidelity paper mockups, and a high-fidelity prototype using contemporary tools and programming environments.

CSIT 537  Web Development  (3 credits)

Prerequisite(s): CSIT 501 or equivalent. Restriction(s): Departmental approval for students with Deferred or Conditional status. This course will discuss issues related to web tools, enterprise web services, and web design. It exams the current state of the arts web development technologies and tools that are used in developing web sites and web services.

CSIT 540  Computer Networks  (3 credits)

Physical and logical aspects of data communications: analog-digital, broadband-baseband, TDM-FDM, protocols, modulation techniques, hardware for communication.

CSIT 545  Computer Architecture  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Basic computer organization and design, digital functions, data representation, microprogramming, CPU organization, the assembler language, and addressing techniques. Required of majors.

CSIT 546  Computer Simulation of Discrete Systems  (3 credits)

Prerequisite(s): CSIT 545. Restriction(s): Departmental approval for students with Deferred or Conditional status. Introduction to simulation and discrete simulation models. Queuing theory and stochastic processes. Simulation methodology including generation of random numbers and variates, design of simulation experiments, analysis of data generated by simulation experiments and validation of models. Survey of current simulation languages and selected applications. Equivalent course CMPT 589 effective through Summer 2019.

CSIT 547  Operating Systems  (3 credits)

Prerequisite(s): CSIT 545. Restriction(s): Departmental approval for students with Deferred or Conditional status. Design and implementation of operating systems, multiprogramming, multiprocessor, device management, scheduling, virtual memory, case studies.

CSIT 548  Scalable Distributed Systems  (3 credits)

Prerequisite(s): CSIT 345 or CSIT 547 or equivalent. With the fast development of the Internet and other Network‐based applications and services, the design and implementation of scalable distributed systems has become more and more important. A broad range of topics on distributed system architecture, distributed coordination and agreement, concurrency control, parallel file system and some parallel data processing platforms are covered in details. Both theoretical knowledge and practical skills are emphasized with several programming assignments and final project design to enhance and deepen student’s understanding.

CSIT 550  Text Management  (3 credits)

Prerequisite(s): CMPT 505. Restriction(s): Undergraduate degree in a Computing Related Field or departmental approval for students with Deferred or Conditional status. An introduction to managing data in text form. Includes creating, manipulating and data mining document and data warehouses, evaluating data quality and investigating new techniques in managing World Wide Web data including advanced usage of XML technologies.

CSIT 551  Mobile Computing  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Course content will include an introduction into mobile device programming including environment basics, application basics, creating user interfaces, how to deal with data, how to accommodate different devices, basic widgets and more advanced user interface parts for multimedia and maps, and app publication.

CSIT 552  Python for Data Science  (3 credits)

Prerequisite(s): CSIT 592; and CSIT 558 may be taken as a prerequisite or corequisite. Python is a popular and important programming language in the Data Science domain. This course will introduce latest Data Science related Python modules and their applications in various Data Science processes, that include data acquisition, data cleaning, data exploration, data modeling, and data visualization. Important Python modules on data mining and machine learning will be covered. Examples of these modules include NumPy, SciPy, Pandas, Matplotlib, and scikit-learn, etc. Various projects will help students become proficient in using these modules to solve real-world Data Science problems and deepen their understanding of important Data Science processes.

CSIT 553  Exploratory Data Analysis and Visualization  (3 credits)

Prerequisite(s): CSIT 528. This course provides fundamental exploratory techniques to summarize and visualize data sets. Exploratory Data Analysis (EDA), which usually comes before formal hypothesis testing can identify interesting patterns and eliminate ideas that are not worthwhile to pursue. R statistical programming language will be used to learn how to manage datasets, use plotting system as well as apply various clustering methods and high dimension reduction technique. Methods to visualize data sets of one, two and multiple variables with examples will also be presented.

CSIT 554  Big Data Analytics  (3 credits)

Prerequisite(s): CSIT 555; and CSIT 558 may be taken as a prerequisite or corequisite. This course provides a hands-on introduction to the state-of-art technologies in massive data management and data mining. The involved techniques are essential to store, process and distill information from giant and diverse data sets. The topics include modern key-value data stores, distributed storage and processing of big data, realtime data processing, and time series analysis.

CSIT 555  Database Systems  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Secondary storage devises. Data transfer. Primary and secondary access methods. Sequential and random access methods. File design. File organizations and corresponding processing. File maintenance. Sorting large files. Databases concepts. Required of majors.

CSIT 556  Introduction to Data Science  (3 credits)

Prerequisite(s): Prior programming experience is required. Restriction(s): Full matriculation into the Data Science program, or department approval for students with deferred or conditional status. This course covers the fundamental concepts and skills of data science. It will introduce students a complete cycle of data science from data loading, cleaning, manipulating, to aggregation in Python language. Students will learn to process semi-structured data using Python data science libraries such as Numpy and pandas.

CSIT 557  Advanced Techniques in Data Science  (3 credits)

Prerequisite(s): CSIT 556. This course covers a variety of advanced data science libraries and applied machine learning algorithms to analyze both semistructured and unstructured data. Students will learn a series of hands-on skills, including data analysis by applying machine learning algorithms and deep learning techniques using advanced libraries such as Scikit-learn and TensorFlow. Case studies and project will be assigned for students to solve the real-world problems.

CSIT 558  Data Mining  (3 credits)

Prerequisite(s): CSIT 501. Data mining involves discovering novel, useful and interesting patterns / trends from large data. In this course, we will study techniques in data mining for knowledge discovery and deploy over various data sets. Topics include knowledge discovery steps, data preprocessing, association clustering, classification, evaluation of algorithms and big data mining.

CSIT 560  Network Security  (3 credits)

Prerequisite(s): CSIT 540. This course teaches the fundamental concepts, architectures and protocols related to network security. Topics covered include: overview of network security, review of cryptography, threat models, authentication and authorization mechanisms and standards, electronic mail security, network layer security, transport layer security, packet filtering, firewalls, intrusion detection, virtual private networks, and recent topics in network security.

CSIT 561  Computer Security  (3 credits)

Restriction(s): Full admission in the MS in Computer Science program. An overview of the fundamental problems of computer security including security of data, systems, and networks, followed by general coverage of current solutions including encryption, authentication, web application security, internet architectures. Testing, analyze current computer security solutions, based on preserving the confidentiality, availability and integrity of computer systems, networks and data.

CSIT 562  Web Security  (3 credits)

Prerequisite(s): CSIT 540. This course examines various threats faced by Web applications and Web sites, and solutions to keep them secure. Topics include: HTTP and Web application technologies, core defense mechanisms, mapping web applications, bypassing client-side controls, attacking authentication, attacking session management, attacking access controls, injecting code, exploiting path traversal, attacking application logic, attacking other users, automating bespoke attacks, exploiting information disclosure, attacking compiled applications, attacking application architecture, attacking Web servers, and finding vulnerabilities in web application source code.

CSIT 565  Information Security Management  (3 credits)

Prerequisite(s): CSIT 547. This course is designed to introduce students to information security principles. Topics covered in the course will include the need for security, risk management, security technology, cryptography, and physical security. Security policies and legal/ethical issues will also be covered.

CSIT 566  Computer Forensics  (3 credits)

Prerequisite(s): CSIT 560 or CSIT 545. The course aims to introduce the students to the fundamental aspects of computer forensics. The course covers proper techniques for collection and analysis of information to be further used in legal and administrative cases. Use of hardware and software solutions in computer forensics, computer forensics law and ethics, as well as documentation will be covered with a hands‐on approach in mind.

CSIT 567  Cryptography  (3 credits)

Prerequisite(s): CSIT 545. Cryptography is an indispensable tool that allows us to protect information in computer systems. This fundamental course includes a great range of discussion on well‐known Cryptographic techniques, including prefect secrecy, block ciphers, symmetric encryption, message authentication codes, hash functions, public key cryptography, key exchange mechanisms, digital signatures and digital certificates.

CSIT 571  Computer Algorithms and Analysis  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Algorithms: definition, design and analysis; sorting and searching techniques and introductory dynamic programming studied as algorithms with complexity theory and optimization techniques applied. Required of majors.

CSIT 574  Image Processing  (3 credits)

Prerequisite(s): CSIT 545. Restriction(s): Departmental approval for students with Deferred or Conditional status. This course provides an introductory and comprehensive treatment of pixel and image processing with applications to fine arts, face recognition, etc. Topics include sampling and quantization, convolution, equalization, filtering, image segmentation, image operations, morphological image processing.

CSIT 575  Computer Graphics  (3 credits)

Prerequisite(s): CSIT 545. Restriction(s): Departmental approval for students with Deferred or Conditional status. An introduction to computer graphics, including the algorithms to generate two-dimensional and three-dimensional graphical pictures. An overview of ray tracing, shading and color theory. Interactive graphics. Graphics devices.

CSIT 580  Network Science  (3 credits)

Prerequisite(s): CSIT 547. This is a course on how the social, technological, and natural worlds are connected, and how the study of networks sheds light on these connections. Topics include: social network structure and its effects on business and culture; crowdsourcing; games on graphs; the propagation through networks of information, fads and disease; small worlds, network effects, and "rich‐get‐richer" phenomena; the power of networks for prediction; the power of the network for web search; networks and social revolutions, and the melding of economics, machine learning, and technology into new markets, such as "prediction markets" or markets for on‐line advertisements.

CSIT 595  Special Topics in Computer Science  (3 credits)

Prerequisite(s): Completion of core courses for student's degree. Restriction(s): Open to fully matriculated students. Recent developments in the field. Topics such as Monte Carlo methods, graphics, expert systems, security, networks and special areas of applications. May be repeated twice for a maximum of 9 credits as long as the topic is different.

CSIT 598  Machine Learning  (3 credits)

Some knowledge of basic probability, statistics, and a bit linear algebra. Full matriculation into the program, or departmental approval for students with deferred or conditional status. Machine learning is a very active field, where one wants to program computers to automatically extract useful information from data to solve a given problem (e.g., learn to recognize human faces, recommend music and movies, and drive autonomous robots). This course is a gentle introduction to modern machine learning. The course aims to strike a balance between at theory and practical applications. Some key concepts behind several machine learning algorithms will be explored.

CSIT 599  Advanced Algorithms for Data Science  (3 credits)

Prerequisite(s): CSIT 528; and CSIT 558 or CSIT 598. Data science is an interdisciplinary field about scientific methods, processes, and systems to extract knowledge or insights from data in various forms, either structured or unstructured. This course provides an introduction to advanced algorithms and optimization techniques for data science. The course introduces topics such as dynamic programming; linear and semi-definite programming; spectral analysis; non-negative matrix factorization; algorithms for learning representations; and Gaussian processes.

CSIT 610  Information Technology Project Management  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. IT Project Management is a course designed to teach students the basic principles of project management as applied to the Information Technology field. The outcome of the course will provide the foundation for developing technology-based project plans, management and experience in project management.

CSIT 615  Advanced Software Engineering  (3 credits)

Prerequisite(s): CSIT 515. Restriction(s): Departmental approval for students with Deferred or Conditional status. This course examines (i) planned and systematic patterns of all actions necessary to provide adequate confidence that a product conforms to established requirements, and (ii) a set of activities designed to evaluate the process by which high-quality complex software products are developed.

CSIT 616  Software Process Management  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Software process management studies processes and concepts for planning and monitoring all software life-cycle phases. Topics include management models and structures, project planning including scheduling, effort estimation and risk management, project personnel and organization, project control (monitoring, measurement, correction and performance standards), software configuration management, and process description languages and tools.

CSIT 633  Neurocomputing  (3 credits)

Prerequisite(s): CSIT 571. Restriction(s): Departmental approval for students with Deferred or Conditional status. Basic neural network concepts, definitions, and building blocks; learning laws; simple implementations; associative networks; mapping networks; survey of applications. Equivalent course CMPT 678 effective through Summer 2019.

CSIT 635  Advanced Human-Computer Interaction (HCI)  (3 credits)

Prerequisite(s): CSIT 535. Restriction(s): Departmental approval for students with Deferred or Conditional status. This course will include an overview of the field of human-computer interaction, and- in a user-centered fashion - members of the class will choose and explore deeply a subfield of HCI (e.g. Technologies for Children, Technologies for Families, Augmented Reality). Students will critically assess, present, and improve upon recent research that is published in the most prestigious HCI conferences and journals.

CSIT 655  Advanced Database Systems  (3 credits)

Prerequisite(s): CSIT 555. Restriction(s): Departmental approval for students with Deferred or Conditional status. To develop in-depth understanding of data base concepts and issues. The major emphasis of the course is on the conceptual (logical) organization, retrieval, and manipulation of data. Required of majors.

CSIT 656  Scientific Databases  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. The course aims to give students the tools and concepts they will need to work with scientific databases in an in-depth manner. It also aims to introduce student to advanced, state-of-the-art concepts as well as give the students the chance to explore scientific database issues within their fields of interest while still in their early stages of study.

CSIT 670  Advanced Computer Algorithms and Analysis  (3 credits)

Prerequisite(s): CSIT 571. Restriction(s): Departmental approval for students with Deferred or Conditional status. Dynamic programming, game trees and backtracking techniques, branch and bound, polynomial evaluation and fast Fourier transform algorithms; complexity and analysis, and optimization techniques will be applied. NP-hard problems and NP-completeness.

CSIT 690  Industry Internship in Information Technology Management  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. This course will serve as the culminating experience for students enrolled in the Masters of Computer Science/ Applied Information Technology Concentration. Students will work with industry partners and faculty to analyze significant problems and work on significant projects in Information Technology, developing solutions towards these problems.

CSIT 691  Independent Study: Computer Science  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Independent study under the direction of a faculty member, offering the opportunity to pursue topics in computer science which may be outside the scope of regular curricular offerings or may be an extension of an existing course or courses. Approval must be obtained from the graduate coordinator or and faculty advisor. May be repeated once for a maximum of 6 credits.

CSIT 695  Readings in Computer Science  (1-4 credits)

Prerequisite(s): CSIT 555 and CSIT 571. Restriction(s): Departmental approval for students with Deferred or Conditional status. Guided study of selected topics in major field of interest.

CSIT 696  Research Methods in Computing  (3 credits)

Prerequisite(s): Departmental approval. Significant investigation of an area of computing research or practice, culminating in the creation of a comprehensive survey or tutorial. Surveys summarize and organize research results in a novel way that integrates and adds understanding to work in the field by classifying existing literature, developing a perspective on the area, and/or evaluating trends.

CSIT 697  Master's Project  (3 credits)

Prerequisite(s): Completion of the computer science required core courses. Restriction(s): Departmental approval for students with Deferred or Conditional status. Analysis of a significant problem related to computing and design of a solution. Where appropriate, implementation and testing as well as documentation of the solution.

CSIT 698  Master's Thesis  (3 credits)

Restriction(s): Departmental approval for students with Deferred or Conditional status. Independent research project done under faculty advisement. Students must follow the MSU Thesis Guidelines, which may be obtained from the Graduate School. Students should take CSIT 699 if they don't complete CSIT 698 within the semester.

CSIT 699  Master's Thesis Extension  (1 credit)

Prerequisite(s): CSIT 698. Restriction(s): Departmental approval for students with Deferred or Conditional status. Continuation of Master's Thesis Project. Thesis extension will be graded as IP (In Progress) until thesis is completed, at which time a grade of Pass or Fail will be given.