Computer Science (CSI)

CSI 1095  Computer Science First-year Seminar  (0)  
Pre-requisite(s): Restricted to Computer Science majors The CS First-Year Seminar is designed to assist new students in making a successful transition from learning in high school (or from another college) to learning at Baylor  

Students are guided to accept responsibility for their learning and to understand practices and values that will impact their undergraduate experience; to further instill practicing values that will lead to academic success; and to connect with other new students and faculty members in the department and across campus for the main purpose of helping them be successful in the department of Computer Science, Baylor, and beyond.

CSI 1130  Introduction to Python for non-majors  (1)  

Introduction to programming using the python language. Topics covered include basic data types, writing programs using sequence, branch and loop and using functions from advanced libraries. This course assumes no prior programming experience and does not count towards the computer science degree.

CSI 1337  Introduction to Video Game Design  (3)  

This course will introduce students to the theory and application of video game design. Students will work in teams to create video games in a game development engine. The students will also learn theory behind good game design, including the use of game rules to enhance gameplay, the creation of virtual worlds, and the use of games as a social experience. No prior programming experience is required.

CSI 1401  Introduction to Programming I  (4)  

An introduction to computer science for non-majors, emphasizing computational thinking, problem-solving, small-scale programming, and applications. This includes basic programming constructs such as data, variables, functions, conditionals, loops, lists, files, sets, dictionaries, object-oriented programming, and problem solving. Applications will include image processing, numerical computing, and graphics.

CSI 1402  Introduction to Programming II  (4)  
Pre-requisite(s): C or better in CSI 1401 or CSI 1430 An advanced introduction to computer science for non-majors emphasizing problem-solving, computational thinking, small-scale programming and applications  

This includes more advanced programming concepts such as data structures, class objects, object oriented programming and algorithm analysis.

CSI 1430  Introduction to Computer Science I with Laboratory  (4)  

Introduction to computers, problem solving and algorithm development. Design, code, debug and document programs using techniques of good programming style and C++ programming language. Laboratory experiments and examples will be used to illustrate and reinforce concepts taught in the lectures.

CSI 1440  Introduction to Computer Science II with Laboratory  (4)  
Pre-requisite(s): CSI 1430 with a grade of C or better  

Continuation of CSI 1430. Introduction to basic aspects of arrays, pointers, classes, inheritance, polymorphism, virtual functions, linked lists, stacks, queues, and binary trees.

CSI 1V90  Special Topics in Freshman Computer Science  (1-4)  

For undergraduates who wish to study introductory topics not available in formal courses within the major. Course may be repeated with a change in content or topic.

CSI 2300  Introduction to Data Science  (3)  
Cross-listed as STA 2300  

Principles of data science, including problem workflow, variable types, visualization, modeling, programming, data management and cleaning, reproducibility, and big data.

CSI 2334  Introduction to Computer Systems  (3)  
Pre-requisite(s): Minimum grade of B in CSI 1440; Minimum grade of C in CSI 2350 or concurrent enrollment  

An introduction to the structure of computer systems and the relationship between software and hardware. Topics include computer organization and representation of information in a computer. An assembly language will be used for programming assignments to illustrate the relationship between high-level languages and machine operations and interpretation of software.

CSI 2350  Discrete Structures  (3)  
Pre-requisite(s): Minimum grade of B in CSI 1440 or concurrent enrollment OR minimum grade of C in CSI 1402 or concurrent enrollment; MTH 1321 or concurrent enrollment  

An introduction to the foundations of discrete structures as they apply to computer science, focusing on providing a solid theoretical foundation for further work. Topics include sets, ordered structures, graph and trees, functions, proof techniques, number systems, logic, Boolean algebra, etc.

CSI 3101  Computers in Society  (1)  
Pre-requisite(s): A CSI or BINF major with at least junior-level standing; or consent of instructor  

Study of computer ethics, risks, privacy, ownership of software, responsibility and liability, computer crime, and professional codes of conduct as they relate to society.

CSI 3303  Information Technology  (3)  

Topics covered will include hardware and software systems, social and ethical issues, information search strategies for research, and personal and organizational security issues (not applicable to a major in computer science).

CSI 3324  Numerical Methods  (3)  
Cross-listed as MTH 3324  
Pre-requisite(s): Minimum grade of C in both CSI 1430 and MTH 1321  

Numerical differentiation and integration, linear systems of equations, numerical solutions of ordinary differential equations, curve fitting, and computational techniques.

CSI 3334  Data Structures  (3)  
Pre-requisite(s): CSI 1440 with a grade of B or better; and CSI 2350 with a grade of C or better  

Software design and construction with abstract data types. Description, performance and use of commonly-used algorithms and data structures including lists, trees, and graphs.

CSI 3335  Database Design and Applications  (3)  
Pre-requisite(s): CSI 3344 with a grade of C or better  

Current relational database design concepts including ER diagrams and normalization. Database access techniques such as SQL and JDBC. Database issues including performance and security. Web-database applications.

CSI 3336  Systems Programming  (3)  
Pre-requisite(s): CSI 2334 and 3344 with a grade of C or better  

The organization and structure of computer systems, basic concepts of an operating system, command line interpreter, script programming, and system calls. Programming projects in Unix and C programming language.

CSI 3338  Computer Organization  (3)  
Cross-listed as ELC 3338  

See ELC 3338 for course information.

CSI 3342  Principles of Software Design  (3)  
Pre-requisite(s): CSI 3335  

An introduction to object-oriented analysis and design. Iterative development; identification of requirements; software development process; UML notation, models and methods; and introduction to design patterns. Software project using an object-oriented language.

CSI 3344  Introduction to Algorithms  (3)  
Pre-requisite(s): Minimum grade of C in CSI 3334  

This course will provide a comprehensive introduction to computer algorithms taken from diverse areas of application. This course will concentrate on algorithms of fundamental importance and on analyzing the efficiency of these algorithms.

CSI 3371  Software Engineering I  (3)  
Co-requisite(s): CSI 3130  
Pre-requisite(s): CSI 3334  

Fundamentals of Software Engineering; software development processes, requirements analysis, modular design and implementation of software systems, software testing and evolution. A small project to illustrate and extend concepts from lectures.

CSI 3372  Software Engineering II  (3)  
Pre-requisite(s): CSI 3344 and CSI 3471 with a grade of C or better  

An engineering approach to software development emphasizing design patterns and techniques for enterprise application development. Completing software project applying development process.

CSI 3373  Software Quality Assurance and Testing  (3)  
Pre-requisite(s): Minimum grade of C in CSI 3471  

Quality, how to assure it and how to verify that it exists; the need for a culture of quality; how to avoid errors; inspections and reviews; verification versus validation; testing, verification, and validation techniques; process assurance and product assurance; quality process standards; faults; problem analysis and reporting; and statistical approaches to quality control.

CSI 3374  Software Project Management  (3)  
Pre-requisite(s): Minimum grade of C in CSI 3471 or minimum grade of C in DSC 4310  

Project planning, cost estimation, and scheduling; project management tools; factors influencing productivity and success; productivity metrics; analysis of options and risks; planning for change; management of expectations; release and configuration management; software process standards and process implementation; and software contracts and intellectual property.

CSI 3439  Computer Architecture  (4)  
Pre-requisite(s): CSI 2334 with a grade of C or better  

Continued study of computer organization, focusing on hardware structure and implementation. Topics include digital logic CPU organization and microprogramming, memory organization, and input/output structures.

CSI 3471  Software Engineering I  (4)  
Pre-requisite(s): A minimum grade of C in CSI 3344 or concurrent enrollment; and a minimum grade of C in CSI 3334  

Introduction to UML notation; constructing and interpreting use cases; interpreting UML models; introduction to design patterns; introduction to testing; introduction to configuration management; Java as a second language; and implementing a graphical user interface. Laboratory assignments and a small project illustrate and extend concepts from lectures.

CSI 3V90  Special Topics in Intermediate Computer Science  (1-4)  
Pre-requisite(s): Instructor approval required  

For undergraduates who wish to study intermediate topics not available in formal courses within the major. Course may be repeated with a change in content or topic.

CSI 3V95  Internship Experience  (1-3)  
Pre-requisite(s): Computer Science major; consent of instructor  

Department arranged/approved summer intern work experience in computer science-related position. Includes a minimum of eight weeks of employment.

CSI 4010  Undergraduate Research Seminar  (0)  
Pre-requisite(s): Consent of instructor  

Introduction of computer science research opportunities to interested computer science undergraduates.

CSI 4111  Cybersecurity Laboratory  (1)  
Pre-requisite(s): Minimum grade of C in CSI 3334 or concurrent enrollment  

This is a laboratory course that will emphasize both offensive and defensive security techniques in an applied laboratory environment. The course may be taken 3 times to earn an upper division elective.

CSI 4144  Competitive Learning  (1)  
Pre-requisite(s): CSI 3334 and consent of instructor  

Students in the course will learn and implement algorithms to solve programming challenges. Topics include graph algorithms, backtracking search, simulation, geometry, combinatorics, number theory, sorting, searching, parsing, and output formatting. The course may be taken up to 3 times for credit.

CSI 4301  Cultural Impact of the Computer  (3)  
Pre-requisite(s): Upper-level standing  

Issues related to the creation and use of computer technology, considered within the broader context of technology and culture. Includes all topics from CSI 3101 as a subset.

CSI 4321  Data Communications  (3)  
Pre-requisite(s): Minimum grade of C in CSI 3336  

Fundamentals of computer networking including data transmission, communication software, protocols, simple networks and internetworking.

CSI 4322  Numerical Analysis  (3)  
Cross-listed as MTH 4322  

See MTH 4322 for course information.

CSI 4323  Introduction to Cybersecurity  (3)  
Pre-requisite(s): Minimum grade of C in CSI 3471  

Minimum grade of C in CSI 3335 and CSI 4321 or concurrent enrollment. This course provides an overview of cybersecurity threats, vulnerabilities, and defensive mitigations. The course will emphasize both theoretical concepts and practical application with critical thinking. Example topics include: authentication, access control, malware, intrusion, firewalls, encryption, software security, auditing/monitoring, and risk management.

CSI 4325  Advanced Cybersecurity  (3)  
Pre-requisite(s): Minimum grade of C in CSI 4321 and CSI 4323  

This course provides additional depth and application of the cybersecurity concepts introduced in CSI 4323 (Introduction to Cybersecurity). Example topics include: penetration testing, cyber resilience, trusted computing, reverse engineering, network situational awareness, security architecture, incident handling, threat intelligence, and forensics.

CSI 4328  Numerical Linear Algebra  (3)  
Cross-listed as MTH 4328  

See MTH 4328 for course information.

CSI 4330  Foundations of Computing  (3)  
Pre-requisite(s): CSI 3344 with a grade of C or better  

Theoretical concepts that form the basis of computer science, including regular languages, context-free languages, Turing-decidable languages, nondeterminism, parsing, NP_Completeness, and undecidability.

CSI 4335  Database Design I  (3)  
Pre-requisite(s): CSI 3342  

Concepts for current relational database design and implementation, including SQL, ER diagrams, normalization, JDBC, XML and DBMS components. Semester project designing a relational database.

CSI 4337  Introduction to Operating Systems  (3)  
Pre-requisite(s): C or better in CSI 3336  

Operating system design and implementation. Topics include process control and synchronization, memory management, processor scheduling, file systems, and security. Course projects implement parts of an operating system.

CSI 4341  Computer Graphics  (3)  
Pre-requisite(s): C or better in CSI 3334 and MTH 2311 or 2321  

Introduction to graphic representation and display of information and objects by computer. Topics include hardware display technology and algorithms for two-dimensional and three-dimensional graphics. A current graphic system model will be used for programming assignments.

CSI 4342  Gaming Platform Frameworks  (3)  
Pre-requisite(s): CSI 4341 with a grade of C or better  

Game Framework Design and Development. An introduction to game development platforms. Topics include: Game design principles, project management, game-related algorithms/mathematics, game physics, game audio/video, AI, development tools, and real-time systems.

CSI 4344  Object-Oriented Development  (3)  
Pre-requisite(s): CSI 3342  

Object-oriented analysis and design methods. Group software projects.

CSI 4352  Introduction to Data Mining  (3)  
Pre-requisite(s): Minimum grade of C in CSI 3335, Minimum grade of C in CSI 3344  

Introduction to the concepts, techniques, and applications of data warehousing and data mining. Topics include design and implementation of data warehouse and OLAP operations; data mining concepts and methods such as association rule mining, pattern mining, classification, and clustering; applications of data mining techniques to complex types of data in various fields.

CSI 43C8  Gaming Capstone Design Project  (3)  
Pre-requisite(s): Minimum grade of C in CSI 3372, Minimum grade of C in CSI 4321, Minimum grade of C in CSI 4337, Minimum grade of C in CSI 4342, and senior standing  

A semester long project course in which students will create a gaming system. The project requires applying information technology according to established design management practices, including technical presentations (oral and written) by all students.

CSI 43C9  Capstone Design Project  (3)  
Pre-requisite(s): Senior standing and Minimum grade of C in CSI 3335, Minimum grade of C in CSI 3372, Minimum grade of C in CSI 4321, and Minimum grade of C in CSI 4337  

A semester-long project course in which students will create a computing system. The project requires applying information technology according to established design management practices, including technical presentations (oral and written) by all students.

CSI 4V96  Special Topics in Computer Science  (1-9)  
Pre-requisite(s): Consent of instructor is required