Undergraduate Course Descriptions
1 credit hour
Introduces new computer science students to the computer science major. Topics include degree requirements, faculty resources, research opportunities, and career options.
3 credit hours
A general introduction to computers with an emphasis on personal computing, database, word processing, presentation graphics, spreadsheets, and Internet tools. Does not count for Computer Science major or minor.
4 credit hours
Prerequisite: MATH 1730 or MATH 1810 with a grade of C or better or Math ACT of 26 or better or Calculus placement test score of 73 or better. The first of a two-semester sequence using a high-level language; language constructs and simple data structures such as arrays and strings. Emphasis on problem solving using the language and principles of structured software development. Three lecture hours and two laboratory hour.
4 credit hours
Prerequisites: CSCI 1170 (or equivalent) with a grade of C or better and MATH 1730 or MATH 1810 with a grade of C or better or Math ACT of 26 or better or Calculus placement test score of 73 or better. A continuation of CSCI 1170. Topics include introductory object-oriented programming techniques, software engineering principles, records, recursion, pointers, stacks and queues, linked lists, trees, and sorting and searching. Three lecture hours and two laboratory hours.
3 credit hours
Prerequisite: CSCI 3110 or consent of instructor. An opportunity for a Computer Science major or minor to gain experience and training in a secondary language. Covers the syntax, advantages, disadvantages, limitations, and selected applications of a language. Credit will not be given toward a Computer Science major or minor if credit has been received for the same language in another course. Credit in secondary computer languages is limited to 3 hours for the major or minor.
3 credit hours
Prerequisite: CSCI 3110 or consent of instructor. An opportunity for a Computer Science major or minor to gain experience and training in a secondary language. Covers the syntax, advantages, disadvantages, limitations, and selected applications of a language. Credit will not be given toward a Computer Science major or minor if credit has been received for the same language in another course. Credit in secondary computer languages is limited to 3 hours for the major or minor.
3 credit hours
Prerequisite: CSCI 3110 or consent of instructor. An opportunity for a Computer Science major or minor to gain experience and training in a secondary language. Covers the syntax, advantages, disadvantages, limitations, and selected applications of a language. Credit will not be given toward a Computer Science major or minor if credit has been received for the same language in another course. Credit in secondary computer languages is limited to 3 hours for the major or minor.
3 credit hours
(Same as MATH 3080.) Prerequisites: CSCI 1170 and MATH 1910 or consent of instructor. Topics include formal logic, proof techniques, matrices, graphs, formal grammars, finite state machines, Turing machines, and binary coding schemes.
3 credit hours
Prerequisites: CSCI 2170 and CSCI 3080 with C or better. Topics include additional object-oriented programming techniques, algorithm design, analysis of algorithms, advanced tree structures, indexing techniques, internal and external sorting, graphs, and file organizations.
4 credit hours
Prerequisite: CSCI 2170 with a grade of C (2.0) or better and MATH 1730 or MATH 1810 with a grade of C (2.0) or better or ACT math score of 26 or better or calculus placement test score of 73 or better. Assembly language and the organization and basic architecture of computer systems. Topics include hardware components of digital computers, microprogramming, and memory management. Laboratory exercises involve logical, functional properties of components from gates to microprocessors. Three lectures and one two-hour laboratory.
3 credit hours
Prerequisite: CSCI 2170 or equivalent. Computer architecture and assembly language. Major emphasis on addressing techniques, macros, and program segmentation and linkage.
3 credit hours
(Same as MATH 3180.) Prerequisites: MATH 1920 and CSCI 2170 or approval of instructor. Topics include series approximation, finite differences interpolation, summation, numerical differentiation and integration, iteration, curve fitting, systems of equations and matrices, and error analysis.
3 credit hours
Prerequisites: CSCI 2170 and CSCI 3080 with C or better in both. Introduction to analysis of computer algorithms: criteria for algorithm analysis; algorithm complexity and asymptotic functions; algorithm design techniques such as recursive, divide-and-conquer, dynamic programming, greedy, backtracking, and branch-and-bound; introduction to Class P, NP, and NP-complete problems.
3 credit hours
Prerequisites: CSCI 3110 and COMM 2200; corequisite: CSCI 3080. Syntax and theory of multiple languages covered with emphasis on binding times, parsers, grammars, finite automata, regular expressions, type checking and equivalence, scope of variables, exception handling, parameter passing, and storage management.
4 credit hours
Prerequisites: CSCI 2170 and either CSCI 3130 or ET 3620. Provides a programmer's view of how computer systems execute programs, store information, and communicate. Topics include machine-level code and its generation by optimizing compilers, computer arithmetic, memory organization and management, networking technology and protocols, and supporting concurrent computation. Three lecture hours and one two-hour laboratory.
3 credit hours
Prerequisite: CSCI 3240. Concepts and facilities of an operating system. Major concepts in memory, processor, device, and information management are covered as well as interrelationships between the operating system and the architecture of the computer system.
3 credit hours
Prerequisites: CSCI 3080, CSCI 3110, and either CSCI 3130 or CSCI 3160. The various phases of a compiler along with grammars, finite automata, regular expressions, LR parsing, error recovery, backward and forward flow analysis, and code optimization. A term project consisting of the design and construction of a functional complier required.
3 credit hours
Prerequisites: CSCI 3110 and CSCI 3080 or consent of instructor. Topics include vector drawing displays, raster scan displays, input devices and techniques, graphics software, transformations, projections, interpolation, and approximation.
1 to 4 credit hours
Prerequisite: Permission of instructor and department. Independent investigation of a selected research problem under the guidance of a faculty member resulting in an oral and written report of results. Does not count toward a minor in Computer Science. May be repeated for a maximum of four credits. A maximum of three credits in the major may come from CSCI 3970, 4280, CSCI 4600, and CSCI 4910.
3 credit hours
Prerequisite: CSCI 3240 or CSCI 3250. Computer network architectures, protocol hierarchies, and the open systems interconnection model. Modeling, analysis, design, and management of hardware and software on a computer network.
3 credit hours
Prerequisites: CSCI 3130 and CSCI 3240 or CSCI 3250. Basic concepts in parallel processing and programming in a parallel environment. Topics include classification of parallel architectures, study of actual parallel architectures, design and implementation of parallel programs, parallel software engineering.
3 credit hours
Prerequisites: CSCI 3110 and CSCI 3080 or equivalent. Principles include search strategies, knowledge representation, reasoning, and machine learning. Applications include expert systems and natural language understanding.
3 credit hours
Prerequisites: CSCI 3110 and CSCI 3080. Principles and applications of intelligent mobile robotics. Various architectures used in the basic AI robotics development paradigms and basic techniques used for robot navigation. Strong emphasis on hands-on mobile robot design, construction, programming, and experimentation using a variety of robot building platforms.
3 credit hours
Prerequisite: CSCI 4300 (with a grade of C or better) or consent of instructor. Introduces network security: fundamentals of network security; mathematical concepts and theoretical analysis in cryptography; examination of risks and threats in computer networks and security mechanisms in different network layers; hands-on experience in network security, including implementation of encryption/decryption methods.
3 credit hours
Prerequisites: CSCI 3080, CSCI 3110, and CSCI 3240. An intensive introduction into current Web technologies including basic HTML, tools for Web page design, XML, client-side methods, and server-side methods. Students will be required to implement several Web-based projects.
3 credit hours
Prerequisite: CSCI 4300 with a C (2.0) or better. Comprehensive exploration of blockchain technology and smart contracts; focus on security and real-world applications; insights into computer security; vulnerability threat control paradigms; fundamental concepts, features, and characteristics of blockchain and smart contracts; Ethereum-specific concepts, tokenization, smart contract security risks, and vulnerabilities.
3 credit hours
Prerequisites: MATH 2050 and CSCI 4400 with a C (2.0) or better. Thorough introduction to the principles and applications of cryptography; focus on various cipher techniques, cryptographic algorithms, and their practical applications; emphasis on hands-on labs to reinforce theoretical concepts and develop practical skills in information security.
3 credit hours
Prerequisites: CSCI 3080 and CSCI 3110. The relational and object models of database design along with relational algebras, data independence, functional dependencies, inference rules, normal forms, schema design, modeling languages, query languages, and current literature.
1 to 6 credit hours
Prerequisites: Senior standing and consent of instructor. Students wishing to enroll must submit a written course/topic proposal to the department prior to the semester in which CSCI 4600 is taken. Proposal must be approved prior to taking the course. At the course conclusion, each enrollee must submit a written report to the department. May count up to 3 hours toward Computer Science major.
3 credit hours
Prerequisites: CSCI 3080, CSCI 3110, CSCI 3240, and COMM 2200 with grades of C (2.0) or better. Consists of a theoretical component and a practical component. Topics include the history of software engineering, software development paradigms and life cycles, and computer-aided software engineering (CASE). Team project developed in parallel with the theory.
3 credit hours
Prerequisite: CSCI 3110 with C (2.0) or better. Comprehensive study of principles and practices of developing secure software systems; exploration and identification of software flaws; utilization of source code analysis tools; implementation of software testing and conduct penetration testing to enhance the security of software applications.
3 credit hours
Prerequisites: CSCI 2170 and CSCI 3080. Integrates theory and applications of software testing techniques. Provides actual hands-on testing experience. Considers multiple testing paradigms.
3 credit hours
Prerequisites: CSCI 3080 and CSCI 3110 with a grade of C (2.0) or better. Proficiency in the Python programming language strongly recommended. Introduces the theory and practice of natural language processing (NLP), focusing on processes that enable computers to understand, generate, and analyze natural language. Includes fundamental algorithms for language modeling and syntactic analysis; core NLP applications areas such as classification, chatbots, and machine translation; and modern methodologies underpinning natural language processing, including machine learning and deep learning.
3 credit hours
Prerequisite: CSCI 3080. Various neural net architectures, theory, and applications including models such as Perceptron, back propagation, Kohonen, ART, and associative memory. Learning and conditioning methods also studied.
3 credit hours
Prerequisites: CSCI 3080 and CSCI 3110 with a grade of C or better. Proficiency in the Python programming language and linear algebra strongly recommended. Algorithms and principles of computer vision. Fundamentals of image processing, feature extraction and representation, and object detection and recognition; image classification, convolutional neural networks, camera Calibration, 3D vision and stereo imaging, and motion analysis and tracking.
3 credit hours
Prerequisite: CSCI 2170. Advanced topics in computer science to be selected and announced at time of class scheduling. May be repeated for up to six credits total.
3 credit hours
Prerequisite: CSCI 2170. Advanced topics in computer science to be selected and announced at time of class scheduling. May be repeated for up to six credits total.
1 to 6 credit hours
Prerequisite: CSCI 3110. Must have completed at least 30 semester hours with two semesters at MTSU; must have taken at least two computer science courses at MTSU; minimum overall average of 2.75 and 3.00 in computer science. Employment experience in a computer-related function in a firm, governmental agency, etc. Must be approved by the department.
1 to 6 credit hours
Prerequisite: CSCI 3110. Must have completed at least 30 semester hours with two semesters at MTSU; must have taken at least two computer science courses at MTSU; minimum overall average of 2.75 and 3.00 in computer science. Employment experience in a computer-related function in a firm, governmental agency, etc. Must be approved by the department.