Department of Computer Science

Comal Building Room 211
PH: 512.245.3409 FAX: 512.245.8750
www.cs.txstate.edu

The Department of Computer Science offers two degree options for students - a Bachelor of Arts (B.A.) and a Bachelor of Science (B.S.). The Bachelor of Science degree program in Computer Science is accredited by ABET, Inc. The department offers courses in computer architecture, data structures and algorithms, automata theory, compilers, operating system, object-oriented design and implementation, Web programming, software engineering, computer graphics, computer networks, distributed systems, computer security, digital forensics, database design, data mining, machine learning, human computer interaction, social computing, artificial intelligence, and several programming languages including C, C++, Java, Assembly, LISP, Perl, PHP, and JavaScript. Computer Science graduates can further their studies in graduate schools or seek employment in industry, such as software development; computer applications in the petroleum, aerospace, and chemical industries; and secondary school teaching.

Mission Statement

The mission of the Department of Computer Science is to advance the knowledge of computer science and technology through education, research, and service for the betterment of industry, government, and society.

Vision Statement

The department seeks to become a competitive doctoral-granting department and to expand its depth and breadth in the research and study of applied computing.

Computer Science Goals

  1. Graduating students with strong technical backgrounds and communication skills.
  2. Graduating students who understand the values and requirements of responsible professionalism and lifelong learning.
  3. Building a sustainable research program.
  4. Developing international visibility for our research.
  5. Providing quality service to the university, the profession, and the community.

Teacher Certification

Students may pursue a B.A. or B.S. degree with teacher certification in Computer Science for Texas public schools (grades 8-12). Students follow the curriculum sequence outlined by their major department or college. Undergraduates interested in certification are strongly encouraged to see an academic advisor early in their undergraduate program. Students seeking teacher certification must complete 21 hours of the professional sequence courses under the College of Education. For information about admission requirements to the teacher certification program refer to the Office of Educator Preparation (OEP) section in this catalog. Graduate or post-baccalaureate students should also contact the OEP for further information. The three types of students the OEP provides services to are undergraduate students seeking certification, graduate students seeking certification, and post-baccalaureate students seeking certification only. Admission to teacher education is required for students who want to be certified to teach in Texas accredited schools.

Courses in Computer Science (CS)

CS 1308. Computer Literacy and the Internet.

A study of the uses of computers and their effects on society. Text processing, spreadsheets, databases, and Web programming. Does not count for computer science credit towards a minor, a BS, or a BA in computer science.
Read More [+] about Computer Literacy and the Internet

3 Credit Hours. 2 Lecture Contact Hours. 2 Lab Contact Hours.
Course Attribute(s): Lab Required
Grade Mode: Standard Letter
TCCN: COSC 1300

Read Less [-] about Computer Literacy and the Internet

CS 1319. Fundamentals of Computer Science.

Provides fundamental knowledge of the six layers of computer science as per the ACM CS0 curriculum. The information, hardware, programming, operating system, applications, and communications layers are presented plus appropriate open computer laboratory exercises. Does not count for computer science credit towards a minor, BS, or BA in computer science.
Read More [+] about Fundamentals of Computer Science

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter
TCCN: COSC 1336

Read Less [-] about Fundamentals of Computer Science

CS 1428. Foundations of Computer Science I.

Introductory course for computer science majors, minors and others desiring technical introduction to computer science. Contains overview of history and structure of the digital computer, including binary data representation. Problem solving, algorithm development, structured programming, good coding style, and control structures of C++ are emphasized. Prerequisite or co-requisite: MATH 1315.
Read More [+] about Foundations of Computer Science I

4 Credit Hours. 3 Lecture Contact Hours. 2 Lab Contact Hours.
Course Attribute(s): Lab Required
Grade Mode: Standard Letter
TCCN: COSC 1437

Read Less [-] about Foundations of Computer Science I

CS 2308. Foundations of Computer Science II.

The course is an introduction to Abstract Data Types (ADTs) including lists, stacks, and queues. Searching and sorting, pointers and dynamic memory allocation, and simple classes and objects also will be covered. The course is a continuation of CS 1428. Prerequisite: CS 1428 with a grade of C or higher.
Read More [+] about Foundations of Computer Science II

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter
TCCN: COSC 2336

Read Less [-] about Foundations of Computer Science II

CS 2315. Computer Ethics.

This course is primarily for computer science majors, focusing on the ethical codes of the professional societies, the philosophical bases of ethical decision-making, and the examination of several contemporary case studies. Prerequisites: CS 1428, ENG 1310, COMM 1310, and PHIL 1305 or PHIL 1320 with grades of C or higher. (WI).
Read More [+] about Computer Ethics

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Writing Intensive
Grade Mode: Standard Letter

Read Less [-] about Computer Ethics

CS 2318. Assembly Language.

A course covering assembly language programming, including instruction sets, addressing modes, instruction formats, looping, logic, data representation, subroutines and recursion; and the interface between hardware and software. Prerequisites: MATH 2358 and CS 2308 with grades of C or higher.
Read More [+] about Assembly Language

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter
TCCN: COSC 2325

Read Less [-] about Assembly Language

CS 3320. Internet Software Development.

A course providing foundations for the construction and design of static and dynamic Web pages with database applications. This will include server-side and client-side software development. Prerequisite: CS 2308 with a grade of C or higher, or consent of instructor.
Read More [+] about Internet Software Development

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Internet Software Development

CS 3339. Computer Architecture.

Use of fundamental hardware components. Topics include ALU’s, single and multiple cycle datapath and control, RISC vs. CISC, pipelining, caches, I/O, virtual memory and related performance issues. Prerequisite: CS 2318 or EE 3420 with a grade of "C" or higher.
Read More [+] about Computer Architecture

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Computer Architecture

CS 3354. Object-Oriented Design and Programming.

The course covers object-oriented design principles and programming for students with prior programming experience. The topics include inheritance and polymorphism, object-oriented design process, UML diagrams, design patterns, exception handling and multithreading. Students will design and implement programs in Java. Cannot receive credit if the student has taken CS 4354. Prerequisite: CS 2308 with a grade of "C" or higher, or consent of instructor.
Read More [+] about Object-Oriented Design and Programming

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Object-Oriented Design and Programming

CS 3358. Data Structures and Algorithms.

This is a course that covers classic data structures and the analysis of algorithms. Prerequisites: CS 2308 and MATH 2358 with grades of C or higher.
Read More [+] about Data Structures and Algorithms

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Data Structures and Algorithms

CS 3369. Embedded Computer Systems.

This course studies the architecture of embedded systems, micro-controllers, their peripherals, languages, and operating systems and the special techniques required to use them. Prerequisite: CS 2318 or EE 3420 with a grade of "C" or higher.
Read More [+] about Embedded Computer Systems

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Embedded Computer Systems

CS 3378. Theory of Automata.

An introduction to automata theory, computability, and formal languages. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Theory of Automata

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Theory of Automata

CS 3398. Software Engineering.

The study of software design, implementation, and validation techniques through team projects. Structured analysis, programming style, and project documentation are emphasized in large software projects. (WI) Prerequisite: CS 2315 or EE 2400; CS 3354, CS 3358; all with grades of C or higher.
Read More [+] about Software Engineering

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Writing Intensive
Grade Mode: Standard Letter

Read Less [-] about Software Engineering

CS 4100. Computer Science Internship.

Provides on-the-job training supervised by computer scientists in industry internship programs approved by the department. Prerequisite: CS majors and minors only.
Read More [+] about Computer Science Internship

1 Credit Hour. 0 Lecture Contact Hours. 20 Lab Contact Hours.
Grade Mode: Credit/No Credit

Read Less [-] about Computer Science Internship

CS 4298. Undergraduate Research I.

Supervised individual research project in a mentor-student relationship with a computer science faculty member. Cannot be given degree credit until the satisfactory completion of CS 4299. Prerequisites: Junior standing; major GPA of 3.00; departmental approval.
Read More [+] about Undergraduate Research I

2 Credit Hours. 1 Lecture Contact Hour. 2 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing
Grade Mode: Credit/No Credit

Read Less [-] about Undergraduate Research I

CS 4299. Undergraduate Research II.

Supervised individual research projects in a mentor-student relationship with a computer science faculty member. Prerequisites: CS 4298 and departmental approval.
Read More [+] about Undergraduate Research II

2 Credit Hours. 1 Lecture Contact Hour. 2 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing
Grade Mode: Standard Letter

Read Less [-] about Undergraduate Research II

CS 4310. Computer Networks.

A survey of network architectures and their components. Emphasis will be on media access, network and transport layer protocols. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Computer Networks

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Computer Networks

CS 4315. Introduction to Data Mining.

This course covers fundamental concepts and techniques in data mining and information retrieval. Data mining topics include classification, cluster analysis and pattern mining. Information retrieval topics include Boolean retrieval, vector space model, and Web search. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Introduction to Data Mining

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Introduction to Data Mining

CS 4318. Compiler Construction.

This course investigates theoretical and practical issues in the design and construction of modern compilers. Topics covered include lexical and syntactic analysis, syntax-directed translation, type checking, intermediate representation, code generation, and runtime systems. A major portion of the course involves implementing a compiler from scratch for a C-like programming language. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Compiler Construction

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Compiler Construction

CS 4326. Human Factors of Computer Systems.

Principles and methods in human factors and ergonomics applied to the design and use of computer systems. Prerequisite: CS 3358 with a grade of C or higher. (WI).
Read More [+] about Human Factors of Computer Systems

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Writing Intensive
Grade Mode: Standard Letter

Read Less [-] about Human Factors of Computer Systems

CS 4328. Operating Systems.

This course covers the principles of operating systems, algorithms for CPU scheduling, memory management, cooperating sequential processes and device management. Prerequisites: CS 3339 and CS 3358 with grades of C or higher.
Read More [+] about Operating Systems

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Operating Systems

CS 4332. Introduction to Database Systems.

Introduction to database concepts, data models, file structures, query languages, database management systems. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Introduction to Database Systems

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Introduction to Database Systems

CS 4346. Introduction to Artificial Intelligence.

An introduction to the basic concepts of artificial intelligence; search techniques, knowledge representation, problem solving. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Introduction to Artificial Intelligence

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Introduction to Artificial Intelligence

CS 4350. Unix Systems Programming.

Fundamentals of Unix operating systems, Unix file system and environment, C memory allocation, development tools, processes and signals, threads, device drivers, and programming for security. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Unix Systems Programming

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Unix Systems Programming

CS 4368. Survey of Computer Languages.

A survey of computer languages. Criteria for choosing languages to be covered include history, important development paradigms and environments, and language implementations. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Survey of Computer Languages

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Survey of Computer Languages

CS 4371. Computer System Security.

Course covers practical aspects of computer system security including managing and producing code for secure systems. Theory, such as cryptography, is introduced as needed. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Computer System Security

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Computer System Security

CS 4372. Introduction to Digital Multimedia.

The course covers concepts, problems and techniques in digital multimedia. Topics include digital representation and data compression of text, speech, audio, natural and synthetic images, and video, as well as multimedia applications, transmission, and standards. In addition, the course introduces perceptual aspects of multimedia signals and sources. Prerequisite: CS 3358 with a grade of "C" of higher.
Read More [+] about Introduction to Digital Multimedia

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Introduction to Digital Multimedia

CS 4378V. Introduction to Machine Learning.

Provides systematic introduction to machine learning, covering basic theoretical as well as practical aspects of the use of machine learning methods. Topics include learning theory, learning methods, recent learning models, etc. Application examples include multimedia information retrieval, text recognition, computer vision, etc. Prerequisite: CS 3358 grade of C or higher.
Read More [+] about Introduction to Machine Learning

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing|Topics
Grade Mode: Standard Letter

Read Less [-] about Introduction to Machine Learning

CS 4378W. Introduction to Human Computer Interaction.

Introduces HCI topics specifically highlighted by new input modalities such as eye-tracking. Considers new input modalities as new channels for data gathering including multimedia compression, interface design, usability evaluation, biometrics. Application of HCI as interdisciplinary research tool also will be discussed. Prerequisite: CS 3358 with grade of C or higher.
Read More [+] about Introduction to Human Computer Interaction

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing|Topics
Grade Mode: Standard Letter

Read Less [-] about Introduction to Human Computer Interaction

CS 4378Z. Practical Game Development.

Course teaches practical aspects of computer game design and implementation. Topics include graphics game engines, game physics, AI methods applied to games, and software architectures for computer games. Students will gain knowledge and skills needed for game development via team projects.
Read More [+] about Practical Game Development

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing|Topics
Grade Mode: Standard Letter

Read Less [-] about Practical Game Development

CS 4379A. Software Testing.

The concepts used in a formal testing of safety critical and high-quality software applications are investigated. Topics include, but are not limited to, test design, static and dynamic testing tools, and formal testing documentation. Prerequisite: CS 3398 with a grade of C or higher.
Read More [+] about Software Testing

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing|Topics
Grade Mode: Standard Letter

Read Less [-] about Software Testing

CS 4379B. Introduction to Graphical User Interfaces.

This course covers abstract and practical foundations of graphical user interface design, evaluation, and implementation. It discusses the fundamentals of computer graphics and interactive computer/human interfaces. The course includes a survey of usability measures, the major GUI standards, and GUI tools. Prerequisite: CS 3358 with a grade of C or higher.
Read More [+] about Introduction to Graphical User Interfaces

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing|Topics
Grade Mode: Standard Letter

Read Less [-] about Introduction to Graphical User Interfaces

CS 4379Q. Introduction to Recommender Systems.

This course covers the basic concepts of recommender systems, including personalization algorithms, evaluation tools, and user experiences. We will discuss how recommender systems are deployed in e-commerce sites, social networks, and many other online systems. Additionally, we will review current research in the field. Prerequisite: CS 3358 with a grade of "C" or higher, or consent of instructor.
Read More [+] about Introduction to Recommender Systems

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing|Topics
Grade Mode: Standard Letter

Read Less [-] about Introduction to Recommender Systems

CS 4379Y. Introduction to Green Computing.

Reducing energy consumption of mobile devices, cloud computing platforms, and supercomputers is a paramount but daunting problem. This course covers fundamental concepts and techniques in green computing, including a hardware energy efficiency roadmap; energy efficient software design, resource management, and storage solutions; and green data centers and mobile computing. Prerequisites: CS 3339 and CS 3358 with grades of C or higher.
Read More [+] about Introduction to Green Computing

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing|Topics
Grade Mode: Standard Letter

Read Less [-] about Introduction to Green Computing

CS 4380. Parallel Programming.

This course teaches practical aspects of parallel programming. The covered topics include multi-core processors and shared-memory programming, hardware accelerator programming, and distributed-memory machines and message-passing programming. The students will gain the knowledge and skills needed for developing parallel software by writing programs for a variety of parallel computers. Prerequisite: CS 3358 with a grade of "C" or higher; or instructor consent.
Read More [+] about Parallel Programming

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Parallel Programming

CS 4388. Computer Graphics.

A study of the hardware and software used in graphic representation and interpretation of data. Prerequisites: CS 3358 with a grade of C or higher and familiarity with trigonometric functions.
Read More [+] about Computer Graphics

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Computer Graphics

CS 4395. Independent Study in Computer Science.

Open to undergraduate students on an independent basis by arrangement with the faculty member concerned. Requires department chair approval.
Read More [+] about Independent Study in Computer Science

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Course Attribute(s): Exclude from 3-peat Processing
Grade Mode: Credit/No Credit

Read Less [-] about Independent Study in Computer Science

CS 4398. Software Engineering Project.

Students undertake a software development project. They work in teams, developing requirements and designs which they will implement and test. Prerequisite: CS 3398 with a grade of C or higher.
Read More [+] about Software Engineering Project

3 Credit Hours. 3 Lecture Contact Hours. 0 Lab Contact Hours.
Grade Mode: Standard Letter

Read Less [-] about Software Engineering Project

Ali, Moonis, Professor, Computer Science, Ph.D., Aligarh Muslim University

Burtscher, Martin, Professor, Computer Science, Ph.D., University of Colorado Boulder

Chen, Xiao, Associate Professor, Computer Science, Ph.D., Florida Atlantic University

Cheung, David K P, Lecturer, Computer Science, Ph.D., The Ohio State Univ Main Campus

Durrett, H John, Associate Professor, Computer Science, J.D., St. Mary's University

Gao, Ju, Associate Professor, Computer Science, Ph.D., Simon Fraser University

Gholoom, Husain A, Lecturer, Computer Science, M.S., New Mexico State Univ Main Campus

Gu, Qijun, Associate Professor, Computer Science, Ph.D., Penn State University Park

Guirguis, Mina S, Associate Professor, Computer Science, Ph.D., Boston University

Hwang, Caneo Jinshong, Professor, Computer Science, Ph.D., Louisiana State Univ A&M College

Koh, Lee-Song, Senior Lecturer, Computer Science, Ph.D., Univ of Oklahoma Norman Campus

Komogortsev, Oleg, Associate Professor, Computer Science, Ph.D., Kent State University

Lehr, Theodore Franklin, Lecturer, Computer Science, Ph.D., Carnegie Mellon University

Lu, Yijuan, Associate Professor, Computer Science, Ph.D., Univ of Texas at San Antonio

Metsis, Vangelis, Assistant Professor, Computer Science, Ph.D., University of Texas at Arlington

Ngu, Hee Hiong, Professor, Computer Science, Ph.D., University of Western Australia

O'Neil, Molly Anne, Lecturer, Computer Science, M.S., Texas State University

Peng, Wuxu, Professor, Computer Science, Ph.D., Penn State University Park

Podorozhny, Rodion, Associate Professor, Computer Science, Ph.D., University of Texas at Austin

Priebe, Roger L, Senior Lecturer, Computer Science, Ph.D., University of Texas at Austin

Qasem, Apan Muhammad, Associate Professor, Computer Science, Ph.D., Rice University

Ramkumar, Vasant Chandkumar, Lecturer, Computer Science, Ph.D., City University of New York

Reichenau, Becky L, Senior Lecturer, Computer Science, M.S., Texas State University

Seaman, Jill M, Senior Lecturer, Computer Science, Ph.D., Penn State University Park

Shi, Hongchi, Chair - Professor, Computer Science, Ph.D., University of Florida

Sumbera, Patricia Y, Lecturer, Computer Science, M.S., Texas State University

Tamir, Dan, Associate Professor, Computer Science, Ph.D., Florida State University

Yang, Guowei, Assistant Professor, Computer Science, Ph.D., University of Texas at Austin

Zare, Habil, Assistant Professor, Computer Science, Ph.D., University of British Columbia

Zong, Ziliang, Assistant Professor, Computer Science, Ph.D., Auburn University