Undergraduate Course Catalog

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.

Computer Science majors taking classes at the 200-level and above will be required to own a laptop computer and may be expected to bring the laptop to such classes. Computer ownership for students in 100-level courses is encouraged but not required. Some classes will require running software under Windows, but a MacIntosh with Parallels will work well for such software. 

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

Intro Comp Sci & Web Prog (3)

Computer Science 1 (4)

3-4

CS

 

200
203
249 

Computers and Society
Intro to Computer Security
Forensics 

3
3
3

CS 



TCMP

300 
or
327
or
210

Local and Wide Area Networks (3)

Dist Proc and Networks (3)

Internetwork Fundamentals (3) 

3

CS 

446 

System Administration 

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 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

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 and respiratory therapy majors, and students in the associate degree program for radiation therapy. 

110 Introduction to Computer Science and Web Programming (3)
An introduction to Web programming utilizing HTML and a Web programming language. A broad survey of computer science including its history, applications, programming languages, and computer architecture. 

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 to 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 and either CS 124 or MATH 215, all with C- or better grades, and 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 and either CS 124 or MATH 215, all with C- or better grades.

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.

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.

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 with a C- or better grade.  

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 with a C- or better grade.  

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 and either CS 124 or MATH 215 and either MATH 161 or 165, all 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 with a C- or better grade.  

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 and 230, both with C- or better grades.

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 with a C- or better grade.  

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 and 376, both with C- or better grades.

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 and 230, both with C- or better grades.  

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 and 310, both with C- or better grades.

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 with a C- or better grade.  

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 with a C- or better grade.  

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 with C- or better grades.  

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 with a C- or better grade.  

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 with a C- or better grade.  

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 with a C- or better grade.  

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 with a C- or better grade.  

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: CS 222 with a C- or better grade; COMM 210; 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.