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 offers one option within the major in cooperative education. 

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.

 See Interdepartmental Programs for the minor in foundations of computer systems.


MAJOR IN COMPUTER SCIENCE, 62-76 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














MATHS


MATHS


MATHS

ECON

120
121
124
222
230
324
327
335
376
436
470
495
496
or
498
161
or
165
162
or
166
221
or
221

Comp Sci 1
Comp Sci 2
Discr Struct
Adv Program
Org Arch 1
Dsg Ana Algo
Networks
Prog Lang
Op Systems
Database Dsg
Thy Cmptn 1
Soft Eng 1
Soft Eng 2 (3)

Soft Eng 2 S (3)
Appl Calc 1 (3)

Calculus 1 (4)
Appl Calc 2 (3)

Calculus 2 (4)
Pbty Stats (3)

Bus Stats (3)

4
4
3
3
3
3
3
3
3
3
3
3


3


3-4


3-4


3


50-52 hrs
Electives, 12 hours from

CS













310
315
339
345
347
369
397
430
438
446
455
456
457
499

Web Prog (3)
Game Prog (3)
Seminar (3-6)
H C I (3)
Net Security (3)
Profes Exper (1-3)
N-Tier Arch (3)
System Prog (3)
Graphics (3)
Sys Admin (3)
Data Mining (3)
Image Proc (3)
Appl Cryptog (3)
Ind Study (3)














12 


62-64 hrs
Cooperative education option,
12 hours from

CS

369

Profes Exper (1-4)

12


74-76 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 MATHS 165, 166 calculus sequence in place of MATHS 161, 162. This will add 2 hours to the program. MATHS 215 substitutes for CS 124. ECON 221 substitutes for MATHS 221.


MINOR IN COMPUTER SCIENCE, 15-17 hours

PREFIX  

NO    

SHORT TITLE   

CR HRS

Complete at least 15 hours from the following

CS













120
121
124
222
230
310
315
327
345
347
436
438
455
456

Comp Sci 1 (4)
Comp Sci 2 (4)
Disc Struct (3)
Adv Program (3)
Org Arch 1 (3)
Web Prog (3)
Game Prog (3)
Networks (3)
H C I (3)
Net Security (3)
Database Dsg (3)
Graphics (3)
Data Mining (3)
Image Proc (3)


15-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
116
203
249
300
446

Intro CS (3)

Comp Sci 1 (4)
Visual Prog
Intro Secur
Forensics
LAN/WAN
Sys Admin



3-4
3
3
3
3
3


18-19 hrs


MINOR IN FOUNDATIONS OF COMPUTER SYSTEMS,
19-21 hours
(See Interdepartmental Programs.)


CERTIFICATE IN COMPUTER  APPLICATIONS, 15 hours

PREFIX  

NO    

SHORT TITLE    

CR HRS

CS
CS


CS


104
110
or
116
233
236
276

Intro Comp
Intro C S (3)

Visual Prog (3)
Micro Sys
Db Tech
Survy Op Sys

3


3
3
3
3


15 hrs


CERTIFICATE IN WEB APPLICATIONS, 12 hours

PREFIX 

NO    

SHORT TITLE 

CR HRS

CS



110
116
236
299X
Intro C S
Visual Prog
Db Tech
Exp Dev Tpcs (3-6)

3
3
3
3


12 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. 
    Not open to students who have credit in ISOM 125.

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 through out. Includes use and writing of programs. A first exploration of the study of computing.
    Prerequisite: MATHS 108 or 125 or 201 or equivalent.
    Not open to students who have credit in CS 120 or equivalent.

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.

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.

230 Computer Organization and Architecture 1. (3)
Performance measurement and benchmarking, assembly language, machine language, integer and floating-point arithmetic, processor architectures, register sets, and microprogramming.
    Prerequisite: CS 121, 124.

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.

249 Computer 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)
Students arrange computer-based projects on a volunteer basis for a non-profit organization. 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 or 116 or 120; permission of the department chairperson.

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.
    Not open to students who have credit in ISOM 417.
    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 110 or 120.

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; either MATHS 161 or 165.

327 (427) 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 222.

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

369 Professional Experience. (1-4)
Professional computing experience in an approved program with computing facilities in business and industry. Paid positions only. Experience may be through co-op, internship, or part-time employment. Requires term activity report. Offered on a credit/no credit basis only. 
    Prerequisite: permission of the department chairperson before starting the experience. 
    A total of 16 hours of credit may be earned, but no more than 4 in any one semester or term, and no more than 3 credit hours counting towards the CS major.

376 (476) 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 (497) Software Engineering 1. (3)
Introduction to software engineering; process, requirements, design, quality assurance, project management, human-computer interaction, software engineering 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. 
    Prerequisite: CS 222.

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.