Computer Science
P. Buis, Chairperson
Computer science is the study of information and computation and their application in computer systems. Computer science majors start by learning the fundamentals of programming and mathematics, while upper-level courses focus on specializations such as software engineering, artificial intelligence, programming languages, theory, algorithms, operating systems, networking, and databases. The ubiquitous application of computer science necessitates that majors be broadly educated and have excellent analytical and communication skills.
The department also offers two minors:
- The computer science minor allows students with other majors to learn the foundations of traditional computer science.
- The computer security minor explores modern issues in computer and information security such as digital forensics and encryption.
Several certificate options are also available.
See Interdepartmental Programs for the minor in foundations of computer systems.
MAJOR IN COMPUTER SCIENCE, 66-70 hours
| A grade of C- or better must be earned in each core course if the course is to be counted toward fulfilling the CS major requirements. |
| PREFIX | NO | SHORT TITLE | CR HRS |
| CS MATH MATH MATH ECON BIO GEOL CHEM PHYC | 120 121 124 222 230 239 324 327 335 376 436 470 495 496 or 498 161 or 165 162 or 166 221 or 221 111 or 101 or 111 or 120 | Computer Science 1 Computer Science 2 Discrete Structures Advanced Programming Computer Org and Arch Social and Professional Issues Des/Analy of Algorithms Dist Proc and Networks Programming Languages Operating Systems Database Design Theory of Computation 1 Software Engineering 1 Software Engineering 2 (3) Soft Eng 2 (service) (3) Applied Calculus 1 (3) Calculus 1 (4) Applied Calculus 2 (3) Calculus 2 (4) Probability and Statistics (3) Business Statistics (3) Principles of Biology 1 (4) Planet Earth Geol Environment (3) General Chemistry 1 (4) General Physics 1 (5) | 4 4 3 3 3 1 3 3 3 3 3 3 3 3 3-4 3-4 3 3-5 |
| | | 54-58 hrs |
| Electives, 12 hours from | |
| CS | 310 315 339 345 347 369 397 430 438 446 455 456 457 499 | Web Programming (3) Game Programming (3) Advanced Topics Seminar (3-6) Human-Computer Interfaces (3) Network Security (3) Professional Experience (1-3) Multitier Web Architectures (3) Systems Programming (3) Computer Graphics (3) System Administration (3) Data Mining (3) Image Processing (3) Applied Cryptography (3) Independent Study (3) | |
| An in-major GPA of 2.0 or better is required. | 12 |
| | | 66-70 hrs |
| To begin a program in computer science the student must have a mathematical background strong enough to take the first required calculus course. Students are encouraged to take the MATH 165, 166 calculus sequence in place of MATH 161, 162. This will add 2 hours to the program. MATH 215 substitutes for CS 124. |
MINOR IN COMPUTER SCIENCE, 17 hours
| PREFIX | NO | SHORT TITLE | CR HRS |
| Complete at least 17 hours from the following |
| CS | 120 121 124 222 230 239 310 315 327 345 436 438 455 456 | Computer Science 1 (4) Computer Science 2 (4) Discrete Structures (3) Advanced Programming (3) Computer Org and Arch (3) Social and Professional Issues (1) Web Programming (3) Game Programming (3) Dist Proc and Networks (3) Human-Computer Interfaces (3) Database Design (3) Computer Graphics (3) Data Mining (3) Image Processing (3) | |
| | | 17 hrs |
| At least 9 credit hours must be BSU courses. Minor GPA must be 2.0 or better. |
MINOR IN COMPUTER SECURITY, 18-19 hours
| PREFIX | NO | SHORT TITLE | CR HRS |
| CS | 110 or 120 200 203 249 300 446 | Intro to Computer Science (3) Computer Science 1 (4) Computers and Society Intro to Computer Security Forensics Local and Wide Area Networks System Administration | 3-4 3 3 3 3 3 |
| | | 18-19 hrs |
| Minor in Computer Security is not open to students with a Major in Computer Science or a Minor in Digital Forensics. |
MINOR IN FOUNDATIONS OF COMPUTER SYSTEMS, 19-21 hours
(See Interdepartmental Programs.)
CERTIFICATE IN COMPUTER APPLICATIONS, 15-16 hours
| PREFIX | NO | SHORT TITLE | CR HRS |
| CS | 104 110 or 120 233 236 276 | Introduction to Computers Intro to Computer Science (3) Computer Science 1 (4) Micro Sys Arch Computer Database Techniques Sur of Comp Op Sys | 3 3-4 3 3 3 |
| | | 15-16 hrs |
CERTIFICATE IN SYSTEMS, NETWORKS, AND SECURITY, 12-13 hours
| PREFIX | NO | SHORT TITLE | CR HRS |
| CS | 110 or 120 203 233 300 | Intro to Computer Science (3) Computer Science 1 (4) Intro to Computer Security Micro Sys Arch Local and Wide Area Networks | 3-4 3 3 3 |
| | | 12-13 hrs |
CERTIFICATE IN TRANSITION TO GRADUATE STUDIES IN
COMPUTER SCIENCE, 24-32 hours
| PREFIX | NO | SHORT TITLE | CR HRS |
| Unless waived, up to 8 hours from | |
| CS | 120 121 | Computer Science 1 (4) Computer Science 2 (4) | 8 |
| Required courses | |
| CS | 222 230 324 335 376 470 | Advanced Programming Computer Org and Arch Des/Analy of Algorithms Programming Languages Operating Systems Theory of Computation 1 | 3 3 3 3 3 3 |
| Electives, 6 hours from | |
| CS | 310 315 327 345 347 430 436 438 455 456 499 | Web Programming (3) Game Programming (3) Dist Proc and Networks (3) Human-Computer Interfaces (3) Network Security (3) Systems Programming (3) Database Design (3) Computer Graphics (3) Data Mining (3) Image Processing (3) Independent Study (3) | 6 |
| | | 24-32 hrs |
CERTIFICATE IN WEB APPLICATIONS, 13 hours
| PREFIX | NO | SHORT TITLE | CR HRS |
| CS | 110 120 236 299X | Intro to Computer Science Computer Science 1 Computer Database Techniques Exp/Devl Topics (3-6) | 3 4 3 3 |
| | | 13 hrs |
| C or better grades required in each course. |
COMPUTER SCIENCE (CS)
104 Introduction to Computers (3)
Introduction to the microcomputer as a word processing, spreadsheet, database, and communications tool. Intended for those in other disciplines. Hardware and software trends, opportunities, and responsibilities in computing are discussed. Lecture and laboratory. Core Transfer Library: Physical Sciences (IPS 1740)
Not open to students who have credit in ISOM 125.
Open only to BGS students, speech pathology majors, and students in associate degree programs for either radiation therapy or respiratory therapy.
110 Introduction to Computer Science (3)
A broad survey of computer science including its history, local and Internet applications, programming languages, and computer architecture. Internet examples will be used throughout. Includes use and writing of programs. A first exploration of the study of computing.
Prerequisite: students should have sufficient facility with high school mathematics to solve simple linear equations and to appreciate the use of mathematical notation and formalism.
116 Visual Programming (3)
Introduction to programming for non-computer science majors. Programming in a Microsoft Windows environment with emphasis on the creation of graphical user interfaces. Students should have sufficient facility with high-school mathematics to use algebraic notation for formulas.
Prerequisite: 2 years of high school algebra or a college math course.
120 Computer Science 1 (4)
Introduction to programming using a high-level language and an established programming paradigm. Emphasis on developing problem-solving skills and programming techniques. Topics include control structures, built-in data structures, simple sorting and searching, procedural abstraction, and paradigm-specific concepts and constructs. Required open-lab and closed-lab assignments bring theory to practice.
Prerequisite: no programming or computer science experience is required. Students should have sufficient facility with high-school mathematics to solve simple linear equations and to appreciate the use of mathematical notation and formalism.
121 Computer Science 2 (4)
Continuation of Computer Science 1. Strong emphasis on object-oriented paradigm and related problem-solving skills and programming techniques. Topics include recursion, dynamic data structures and related algorithms, sorting and searching, file processing, and using standard libraries in chosen object-oriented environment. Open-lab and closed-lab assignments are required.
Prerequisite: CS 120 with a C- or better grade.
124 Discrete Structures (3)
Introduction to topics in discrete structures for computer science majors. Topics include propositional and predicate logic, sets, induction, recursion, relations, functions, combinatorial enumeration, Boolean algebra, and finite state machines. Applications of these topics to computer science are discussed.
200 Computers and Society (3)
Introduction to relationship between computers, the Internet, and the laws regulating them, including the U.S. Constitution, intellectual property law, fair use, and privacy rights. Encryption technologies and its application to privacy, authentication, and digital rights management are central to these issues. Includes significant reading and writing assignments.
203 Introduction to Computer Security (3)
Introduction to network infrastructure, security threats, organization of file systems, encryption and decryption algorithms, authentication algorithms, programming and deployment of firewalls, intrusion detection systems, and virtual private networks, forensics, malicious software, and system administration.
Prerequisite: CS 110 or 116 or 120.
204 Personal Computing (1)
Topics include home networking, hardware and software trends, digital media, storage formats such as MP3 and MPEG4, ubiquitous computing, ethics, digital rights management, and personal entertainment devices. Includes laboratory use of common tools and devices.
205 Multimedia Programming (1)
Introduction to end-user multimedia programming for Internet deployment. Includes laboratory use of common software tools, such as Flash and ActionScript, for creation, manipulation, and network transfer of multimedia content.
206 Digital Imaging for the Web (1)
Understanding multimedia compression algorithms and storage formats, such as JPEG, PNG, TIFF, and BMP, and their applications to the Web. Includes laboratory use of common software tools such as Photoshop and Dreamweaver for creation, manipulation, and network transfer of graphics and Web pages.
222 Advanced Programming (3)
Project-intensive study of advanced topics and best practices in software development, including advanced language features, modular decomposition, and development tools.
Prerequisite: CS 121, 124, both with C- or better, ENG 103 or equivalent.
230 Computer Organization and Architecture (3)
Performance measurement and benchmarking, assembly language, machine language, integer and floating-point arithmetic, processor architectures, register sets, and microprogramming.
Prerequisite: CS 121, 124 with C- or better grades.
233 Microcomputer System Architecture (3)
Elements of microcomputer systems architecture and organization. Topics to be discussed include data representation, digital logic, instruction sets, assemblers, processors, memory, and input/output.
Prerequisite: CS 110 or 116 or 120 or equivalent.
236 Computer Database Techniques (3)
Introduction to use of relational database systems; design and development of database applications. Construction of user interfaces for data entry. Graphical and textual SQL database queries. Generating reports in various formats. Includes hands-on labs.
Prerequisite: CS 104 or equivalent.
Not open to students who have credit in CS 436.
239 Social and Professional Issues (1)
Discussion of social and professional issues in computer science.
Prerequisite: CS 222.
249 Forensics (3)
Introduction to digital forensics as applied to gathering evidence of inappropriate behavior on a computer. Includes an examination of prominent file system architectures and search algorithm techniques, physical characteristics of magnetic media, secure deletion methodologies, and cryptology.
Prerequisite: CS 203.
269 Service Learning (1-3)
Professional or volunteer work experience in computing. Students must submit a project plan and obtain supervisor approval before registering. Requires verification of project completion. Offered credit/no credit only.
Prerequisite: one of CS 110, 116 or 120; permission of the department chairperson.
A total of 3 hours of credit may be earned.
276 Survey of Computer Operating Systems (3)
An introduction to computer operating systems with hands-on labs. Topics related to concurrency, process and resource management, input/output control, and design problems are discussed. Comparisons of current operating systems will be studied.
Prerequisite: CS 233.
Not open to students who have credit in CS 376.
299X Experimental/Developmental Topics (3-6)
Topics relevant to the discipline. Course titles will be announced before each semester.
A total of 6 hours of credit may be earned.
300 Local and Wide Area Networks (3)
An introductory networking course with hands-on labs. LAN usage: file servers, print servers, and database servers. LAN design: writing systems, protocols, interconnection devices, and operating systems. WAN usage: file transfer protocols and remote information systems. WAN design: leased phone lines, protocols, and routers.
Parallel: CS 120 or 203 or 233.
310 Web Programming (3)
Advanced HTML, including XHTML, Cascading Style Sheets, Java Script and Dynamic HTML. XML including DTDs and XSL. Server side programming, security issues, and encryption-based security mechanisms.
Prerequisite: CS 121.
315 Game Programming (3)
Serves as an introduction to game programming, and topics include active and passive rendering, sprite animation, collision detection, audio playback, input devices, deployment, and applications of artificial intelligence.
Prerequisite: CS 222.
324 Design and Analysis of Algorithms (3)
Topics include: analysis of algorithms; dynamic programming; probabilistic algorithms, examples of geometric, combinatorial, and graph algorithms, pattern matching; introduction to NP-completeness.
Prerequisite: CS 121, 124; and either MATH 161 or 165, with C- or better grades.
327 Distributed Processing and Networks (3)
The hardware and software of computer networks and distributed processing. Develops the important design parameters and a general design methodology.
Prerequisite: CS 324.
335 Programming Languages (3)
Study of principles of programming languages. Emphasizes language paradigms and important features, structures, characteristics, and formal syntax of modern high-level programming languages. Examples of languages in each paradigm will be studied.
Prerequisite: CS 222, 230.
339 Advanced Topics Seminar (3-6)
In-depth study of a topic taught in a seminar format. Topics will be posted in the department before registration.
Prerequisite: permission of the instructor or department chairperson.
A total of 6 hours of credit may be earned.
Open only to juniors and seniors.
345 Human-Computer Interfaces (3)
Investigation into the principles and practice of user interface design, evaluation, and implementation. Topics include user-centered design, graphical user interface programming, evaluation methods, and software architectures.
Prerequisite: CS 222.
347 Network Security (3)
Topics include encryption, decryption, protocols, viruses, network security, authentication, legal and ethical issues, and security in operating systems, databases, e-commerce, Internet, wireless. Algorithms, protocols and applications such as RSA, DES, SSL, Firewalls, Digital Signatures, VPNs and emerging topics will be explored.
Prerequisite: CS 327, 376.
369 Professional Experience (1-3)
Professional or volunteer work experience in computing. Students must submit a project plan and obtain supervisor approval before registering. Requires verification of project completion. Offered credit/no credit only.
Prerequisite: CS 222; permission of the department chairperson.
A total of 3 hours of credit may be earned.
376 Operating Systems (3)
Investigate the functions and structure of computer operating systems, processors, and memory. Topics include process control, concurrency, scheduling, security, and file systems. Introduces topics in systems programming, including I/O programming, signals, and IPC.
Prerequisite: CS 222, 230.
397 Multitier Web Architectures (3)
Topics include n-tier architectures, data access and application logic layers, Web services, scalability, advanced XML, service-oriented architectures, object access protocols, and Web site administration and security. Projects will be used to reinforce concepts.
Prerequisite: CS 222, 310.
430 Systems Programming (3)
Considers the computer system from the points of view of its architecture, operating system, and applications. Topics include processor organization, peripheral devices, I/O programming, system programs, monitor services, file organization, and real-time applications.
Prerequisite: CS 376.
436 Database Design (3)
An introduction to database design, including physical representation, modeling, database systems, and implementation.
Prerequisite: CS 222.
438 Computer Graphics (3)
Methods of developing, modifying, and rendering graphics displays. Emphasizes the design and writing of graphics software for both two- and three-dimensional displays. Knowledge of a structured high-level language is required.
Prerequisite: CS 222.
446 System Administration (3)
Creating user accounts, local user authentication, network user authentication with encryption, filesystem and fileserver access control, configuration of Web servers, Web server authentication, and traffic encryption.
Prerequisite: CS 300 or 327.
455 Data Mining (3)
Introduction to data mining algorithms, implementations, and applications. Topics include data preprocessing, clustering analysis, data classification, mining association rules, complex data mining, Web mining, and new applications in data mining.
Prerequisite: CS 222.
456 Image Processing (3)
Project based, dealing with the basic principles of digital image processing and computer vision. Topics: digital image formats, geometric operations on digital images, filtering, histogramming, binarization of grayscale images, labeling binary images, perimeter and area determination, thinning operations, object recognition using global features, edge detection processes, and other topics as time permits.
Prerequisite: CS 222.
457 Applied Cryptography (3)
Introduction of basic principles and application of cryptography. Topics include encryption, decryption, private and public key systems, and their mathematical foundation: divisibility and Euclidean algorithm, arithmetic of congruences, and large prime numbers. Projects are implementations of related algorithms. LISP and JAVA are recommended languages.
Prerequisite: CS 222.
470 Theory of Computation 1 (3)
Mathematical logic; alphabets and languages; finite automata, regular and nonregular languages, Kleene’s theorem; regular grammars; pushdown automata and context-free grammars; Turing and Post machines; recursive and recursively enumerable languages; the Chomski Hierarchy.
Prerequisite: CS 324.
495 Software Engineering 1 (3)
Introduction to software engineering: process, requirements, design, quality assurance, project management, and tools. Capstone project for the computer science major. Teams work on year-long immersive projects and perform all software development tasks in cooperation with a client partner. To be taken in the last full academic year before graduation.
Prerequisite: COMM 210; CS 222; and permission of the department chairperson.
496 Software Engineering 2 (3)
Continuation of CS 495. Must be taken in the semester following CS 495. Involves a senior capstone project with a client partner from the Ball State University community.
Prerequisite: CS 495.
498 Software Engineering 2 (service) (3)
Continuation of CS 495. Must be taken in the semester following CS 495. Involves a senior capstone project with an external client partner.
Prerequisite: CS 495.
499 Independent Study (3)
Special advanced studies of computer science topics not taught in other courses.
Prerequisite: permission of the department chairperson.
Open only to juniors and seniors.