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, algorithms, and discrete mathematics, while upper-level courses focus on specializations such as software engineering, programming languages, theory, web and mobile platform development, 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. 


MAJOR IN COMPUTER SCIENCE (BA/BS), 66-72 credits

PREFIX

NO

SHORT TITLE

CREDITS

CS












120
121
222
224
230
239
380
416
418
419
431
495
498

Comp Sci 1: Prog Fundamentals
Computer Science 2
Advanced Programming
Des and Analy of Algorithms
Computer Org and Arch
Social and Professional Issues
Theory of Computation 1
Computer Networks
Database Design
Operating Systems
Programming Languages
Software Engineering 1
Software Engineering 2

4
4
3
3
3
1
3
3
3
3
3
3
3

12-16 credits from
 
CS

MATH
124
or
215
Discrete Structures (3)

Discrete Systems (4)
 

3-4
MATH


161
or
165
Applied Calculus 1 (3)

Calculus 1 (4)
 

3-4
MATH


162
or
166
Applied Calculus 2 (3)

Calculus 2 (4)
 

3-4
MATH





ECON
181
or
221
or
321
or
221
Elementary Probability Stats (3)

Probability and Statistics (3)

Mathematical Statistics (4)

Business Statistics (3)
 





3-4
 
12-16 crs
   
3-5 credits from  
BIO

CHEM

GEOL

PHYC


111
or
111
or
201
or
110
or
120
Principles of Biology 1 (4)

General Chemistry 1 (4)

Earth, Life, and Time (3)

General Physics 1 (4)

General Physics 1 (5)
 







3-5
   
Electives, 12 credits from

CS












MATH

315
369
410
411
420
421
439
445
446
447
455
456
490
499
415

Game Programming (3)
Professional Experience 1 (1-3)
Web Programming (3)
Mobile Application Dev (3)
Multitier Web Architectures (3)
Data Analytics (3)
Current Topics Seminar in CS (3-6)
Human-Computer Interaction (3)
System Administration (3)
Network Security (3)
Data Mining (3)
Image Processing (3)
Software Production Studio (3-6)
Independent Study (1-6)
Coding and Communication (3)














12





66-72 crs

MINOR IN COMPUTER SCIENCE, 17 credits

PREFIX  NO  SHORT TITLE  CREDITS
       
CS  120 Comp Sci 1: Prog Fundamentals   4
  121  Computer Science 2   4
       
9 credits from the following 

CS














124
222
224
230
315
380
410
411
416
418
419
420
421
431
439
445
446
447
455
456
490

Discrete Structures (3)
Advanced Programming (3)
Des and Analy of Algorithms (3)
Computer Org and Arch (3)
Game Programming (3)
Theory of Computation 1 (3)
Web Programming (3)
Mobile Application Dev (3)
Computer Networks (3)
Database Design (3)
Operating Systems (3)
Multitier Web Architectures (3)
Data Analytics (3)
Programming Languages (3)
Current Topics Seminar in CS (3)
Human-Computer Interaction (3)
System Administration (3)
Network Security (3)
Data Mining (3)
Image Processing (3)
Software Production Studio (3-6)























9




17 crs

No more than 8 transfer credits are accepted in the minor, and the minor is not open to majors in computer science or minors in computer security. CS 120 requires MATH 108 or Math Placement.

MINOR IN COMPUTER SECURITY, 18-19 credits

PREFIX 

NO    

SHORT TITLE   

CREDITS

CS







CT
CS

110
or
120
200
203
249
416
or
210
446

Intro Comp Sci and Web Prog (3)

Comp Sci 1: Prog Fundamentals (4)
Computers and Society 
Intro to Computer Security
Forensics 
Dist Proc and Networks (3)

Fundamentals of Network Design (3)
System Administration

3-4
3
3
3


3
3





18-19 crs
Minor in Computer Security is not open to students with a Major in Computer Science or a Minor in Digital Forensics. 


COMPUTER SCIENCE (CS)

101 Introduction to Programming (1)
Introduction to programming. Emphasis on developing problem-solving skills and programming techniques. Topics include control structures, procedural abstraction, and introductory linear data structures.
    
A total of 3 credits may be earned, but no more than 1 in any one semester or term.

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, or radiography associate degree.

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

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

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

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.

120 Computer Science 1: Programming Fundamentals (4)
Introduction to programming through media computing. Learn basic programming techniques while manipulating image and audio data at the pixel and sound sample level. Topics include control structures, built-in data structures, simple sorting and searching, and procedural abstraction. Required open-lab and close-lab assignments bring theory to practice.
    
Prerequisite: MATH 108 or math placement score sufficient to place into MATH 111, or permission of the department chairperson.

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.

150 Introduction to Teaching Computer Science in Secondary Schools (3)
An introduction to the process of becoming a Computer Science teacher in secondary schools. Through coursework and targeted clinical experiences, teacher candidates will begin to form their professional identities as future educators, develop a beginning knowledge base for teaching, and engage with the integration of technology throughout the learning process. They will also observe, develop, and demonstrate initial core teaching practices.
    
Prerequisite: CS 120 with a C- or better.

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

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 with a C- or better and either CS 124 or MATH 215 with a C- or better.
    Prerequisite or parallel: ENG 104 or 114 or equivalent (e.g., testing or placement).
    Open only to students in majors, minors, certificate programs, and graduate students of the Department of Computer Science.

224 Design and Analysis of Algorithms (3)
Introduction to algorithm analysis, including probabilistic, geometric, combinatorial, and graph algorithms.
    
Prerequisite: CS 121 with a C- or better and either CS 124 or MATH 215 with a C- or better.
    Open only to students in majors, minors, certificate programs, and graduate students of the Department of Computer Science.

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

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, 120; permission of the department chairperson.
    A total of 3 credits may be earned.

299 Experimental/Developmental Topics (3-6)
Topics relevant to the discipline. Course titles will be announced before each semester.
    
A total of 6 credits may be earned.

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.

369 Professional Experience 1 (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 with C- or better grade and permission of the department chairperson.
    A total of 3 credits may be earned.

370 Professional Experience 2 (1-6)
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. Note: unlike CS 369, this course does not count as an elective on the computer science major program.
    
Prerequisite: permission of the department chairperson.
    Parallel: CS 369.
    A total of 6 credits may be earned.

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

393 Teaching Computer Science in Middle Schools (3)
Introduction to national and state computer science standards, curricular materials, instructional materials and methods, and assessment related to topics taught in middle school computer science.
    
Prerequisite: CS 150 with a C or better and CS 222, 224, and 230, each with a C- or better; minimum grade-point average of 2.5 in all computer science courses that are to be applied to the major; admittance to teacher education, and permission to enroll in 300/400-level education courses.
    Parallel: EDJH 385.

395 Teaching Computer Science in Secondary Schools (3)
Introduction to national and state computer science standards, curricular materials, instructional materials and methods, and assessment related to topics taught in secondary school computer science.
    
Prerequisite: CS 393 with a C or better; minimum GPA of 2.5 in all CS courses to be applied to the major; admittance to teacher education program and admittance to enroll in 300/400-level education courses.
    Parallel: EDSE 380.

410 (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.    

411 (320) Mobile Application Development (3)
Mobile application development using current technologies. Topics include use of mobile device API, responsive design, location aware applications, hardware sensor applications, resource management, and multimedia applications.
    
Prerequisite: CS 121 with a C- or better.

416 (327) Computer Networks (3)
This course covers various networks such as Internet, WiFi and Ethernet. The focus is on TCP/IP network layers and protocols such as physical layer, data link protocol, media access control, routing, transport and application, and network security.
    
Prerequisite: CS 224 with a C- or better grade.
    Not open to students who have credit in CS 327.

418 (346) Database Design (3)
An introduction to database requirements analysis, modeling, creation, and usage. Topics include ER model, relational model, relational algebra, SQL, dependencies and normal forms, indexes, views, sequences, web-based client-server applications development, ETL, procedural language, database security, and NoSQL.
    
Prerequisite: CS 222 with a C- or better grade.

419 (376) Operating Systems (3)
Investigation on the functions and structure of computer operating systems, processors, and memory. Topics include operating systems principles, process control, concurrency, memory management, scheduling, and security.
    
Prerequisite: CS 222 and 230, both with a C- or better grade.

420 (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 with a C- or better grade, and either CS 410 or 411 with a C- or better grade.

421 (321) Data Analytics (3)
Introduction to data acquisition, transformation, manipulation, and visualization on large-scale structured and unstructured data. Discussion of basic data analytics methods and algorithms. Application of data analytics in business, web, social networks, and science domains.
    
Prerequisite: CS 121 with a C- or better.

431 (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 a C- or better grade.
    Not open to students who have credit in CS 335.

439 (339) Current Topics Seminar in Computer Science (3-6)
In-depth study of a topic taught in a seminary format. Topics will be posted in the department before registration.
    
Prerequisite: CS 222 with C- or better grade and permission of the instructor.
    A total of 6 credits may be earned, but no more than 3 in any one semester or term.
    Open only to juniors and seniors.

445 (345) Human-Computer Interaction (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.

446 System Administration (3)
Covers the setup and administration of a production-quality. Unix/Linux server, suitable for web/mail hosting, shared shell hosting. Topics include general Unix proficiency, the Internet infrastructure, and system administration essentials. Lecture/lab course targeted towards students from various majors, either with some prior Unix/Linux experience or an eager ability to learn new things quickly. No prior Unix/Linux experience is assumed. Provides a foundational understanding of Unix/Linux and instruction on configuring Unix/Linux to be used as servers for file sharing, user management, web and email hosting.
    
Prerequisite: CS 300 or CS 416 or CT 210 or CIS 317 with a C- or better.

447 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 416 or CT 210 or CIS 317 with a C- or better.

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.

490 Software Production Studio (3-6)
Work with a multidisciplinary team to create an original software product. Students will use an iterative, incremental, user-centered approach to design, develop, test, and deploy their work. This course is open to all majors but is offered by permission only to ensure each team has a practical balance of skills and interests; contact the department for the next planned offering and application instructions.
    
Prerequisite: permission of the instructor.
    A total of 6 credits may be earned.

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.

498 Software Engineering 2 (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.
    Open only to computer science majors.

499 Independent Study (1-6)
Special advanced studies of computer science topics not taught in other courses.
    
A total of 6 credits may be earned.
    Open only to juniors and seniors.