Course Descriptions

101 Johnson EPS Building

Martin, TN 38238

Ph:

(731) 881-7391

Fax:

(731) 881-7383

Em:

Dr. Joshua Guerin, Interim Chair

Course Descriptions

NOTE: Click course name for description.

 

CSCI 220 - Introduction To Computer Science

CSCI 221 - Programming Concepts and Problem Solving I

CSCI 222 - Programming Concepts and Problem Solving II

CSCI 301 - Discrete Structures for Computer Science I

CSCI 302 - Discrete Structures for Computer Science II

CSCI 325 - Data Structures and Algorithms

CSCI 335 - Mobile Platform Development

CSCI 352 - Software Engineering

CSCI 360 - Introduction to Computer Networks

CSCI 380 - Artificial Intelligence

CSCI 385 - Distributed Systems

CSCI 410 - Database Management Systems

CSCI 415 - Web-Based Client-Server Programming

CSCI 420 - Computer Organization and Architecture

CSCI 430 - Algorithm Design and Analysis

CSCI 435 - Theory of Computation

CSCI 445 - Computer Graphics

CSCI 458 - Autonomous Mobile Robotics

CSCI 470 - Comparison of Programming Languages

CSCI 475 - Compilers, Interpreters and Language Translators

CSCI 480 - Internship in Computer Science

CSCI 485 - Computer Operating Systems

CSCI 490 - Advanced Topics in Computer Science

CSCI 495 - Senior Design Project

CSCI 220 - Introduction To Computer Science

(3) An introduction to the field of computer science and a survey of computing-related topics intended for computer science majors who are not ready for CSCI 221, and non-majors in related engineering fields and other scientific and technical disciplines. Topics include the history of the discipline, programming in a modern high-level language, lower-level languages, digital logic, computer architecture, operating systems, and software applications.

CSCI 221 - Programming Concepts and Problem Solving I

(3) An introduction to programming in the C++ language. Types and representations, arithmetic, strings, arrays, control structures, basic algorithm design, and problem solving.

CSCI 222 - Programming Concepts and Problem Solving II

(3) A programming intensive continuation of CSCI 221 and introduction to the object oriented paradigm. Multidimensional arrays, structs, classes, inheritance and polymorphism, pointers and dynamic memory management, recursion, templates, and operator overloading. (F, Sp)

CSCI 301 - Discrete Structures for Computer Science I

(3) Applications of mathematics fundamental to the science and technology of computer science, providing an appropriate theoretical background for advanced courses. Topics include: propositional logic, predicate logic and quantified statements, proof techniques, sequences, recursion, and set theory. Prereq: CSCI 221 AND MATH 251 or permission of instructor.

CSCI 302 - Discrete Structures for Computer Science II

A continuation of CSCI 301. Applications of mathematics fundamental to the science and technology of Computer Science. Topics include functions, relations, counting and combinatorics, probability, graphs, trees, basic algorithm analysis, regular expressions, and finite-state automata. (S) Prereq: CSCI 301 or permission of instructor

CSCI 325 - Data Structures and Algorithms

(3) Detailed study of data structures and their implementations. Strings, lists, queues, stacks, graphs, trees, sparse arrays, and file structures. Algorithms involving iteration, recursion, sorting, searching, hashing and basic complexity analysis. Prereq: CSCI 222.

CSCI 335 - Mobile Platform Development

(3) Advanced programming techniques for mobile platforms such as smart-phones and tablets using an object-oriented language. Topics include: exception handling, graphics objects, graphical user interfaces, touch interfaces, mobile software development kits, sensor input (accelerometer, gyro, GPS, etc.), and multimedia. Prereq: CSCI 325.

CSCI 352 - Software Engineering

(3) Techniques, methodologies, and tools related to the planning, development, and maintenance of large software systems in a contemporary development setting. Focus on team-based development practices. Prereq: CSCI 222.

CSCI 360 - Introduction to Computer Networks

(3) Fundamentals of networking connectivity and communications. Local and wide area network basics, networking architecture, layers, standards, and security. Network protocols including TCP/IP family of protocols. Techniques and projects on routing simulations, encryption and digital signatures, and client-server programming.

CSCI 380 - Artificial Intelligence

(3) History, intelligent agents, classical search, game-playing, declarative programming, reasoning under uncertainty, and planning. Programming assignments will incorporate techniques covered in lecture and programming in languages appropriate to A.I. Prereq: CSCI 302 and 325.

CSCI 385 - Distributed Systems

(3) Introduction to Distributed Systems. An introduction to the field of distributed systems, and the fundamental problems related to their design and construction. Concurrent programming, thread pools and safety, non-blocking I/O, scalable sever design, file system design, distributed mutual exclusion and deadlock detection, pipelining schems, and MapReduce. Prereq: CSCI 222 or 226. (as needed) Prereq: CSCI 325.

CSCI 410 - Database Management Systems

(3) Design and implementation of relational database systems. Topics include relational data models, ERD, normalization, SQL programming, transaction management and concurrency control, and object-oriented DBMS..

CSCI 415 - Web-Based Client-Server Programming

(3) Design and implementation of interactive client-server web based applications and systems. Topics include client technologies, web server technologies, database storage, communication protocols, design patterns, and security. Prereq: CSCI 325.

CSCI 420 - Computer Organization and Architecture

(3) A study of the hardware and low-level software organization typical of a modern computing platform. Boolean Algebra, digital logic, instruction sets, assembly languages, representations of data, computer arithmetic, memory and processor architectures, pipelining, input-output systems, alternative architectures, and evolution of computing hardware. Prereq: CSCI 301 AND CSCI 325.

CSCI 430 - Algorithm Design and Analysis

(3) Introduction to algorithm design principles, techniques for the analysis of algorithms, problem-solving methodologies, and advanced data structures. Topics include searching and sorting, divide and conquer, greedy algorithms, dynamic programming, graph algorithms, asymptotic analysis of algorithms, proofs of correctness, and advanced data structures. Prereq: CSCI 302 and 325.

CSCI 435 - Theory of Computation

(3) A theoretical treatment of formal languages, classical models of computation, and related issues including complexity and computability. Topics include formal languages and the relationship among classes of languages; models of computation including regular expressions, grammars, finite state machines, and Turing machines; complexity classes (specifically P, NP, and NP-Complete) with connections to classical problems in computing; and the nature of decidable and undecidable problems. Prereq: CSCI 302 and 325.

CSCI 445 - Computer Graphics

(3) Frame buffers, display files, graphics primitives, transformations of two-dimensional spaces, windows, viewports, clipping, covering, transformations of three-dimensional space, parallel and perspective projections, stereoscopic views, hidden line algorithms. Prereq: CSCI 325 AND MATH 310.

CSCI 458 - Autonomous Mobile Robotics

A laboratory-style introduction to hardware and software issues related to the design and application of autonomous mobile robots. The course will cover fundamental concepts in robotics from a computational standpoint. Topics include sensors and actuators, and development of software for control, obstacle avoidance, planning and navigation, interaction with and manipulation of the physical world. Prereq: CSCI 325.

CSCI 470 - Comparison of Programming Languages

(3) Syntax and basic characteristics of grammars, language constructs, storage allocation, binding times, and lexical analysis of programming languages. Families of programming languages studied include imperative (procedural), object oriented, functional, and logical languages. Prereq: CSCI 302, CSCI 325.

CSCI 475 - Compilers, Interpreters and Language Translators

Translators (3) Theory of compilable languages, construction of software for compiling, interpreting and translating computer languages. Study of various types of translators, implementation of a translator for a language. Prereq: CSCI 302 and 325.

CSCI 480 - Internship in Computer Science

Supervised work experience in business establishments, institutions, or other organizations matched to the student'€™s curriculum. May be repeated for up to a total of six (6) hours internship credit. A maximum of three (3) hours may be used to fulfill upper-division computer science electives. Prereq: Departmental approval is required; at least Junior standing.

CSCI 485 - Computer Operating Systems

(3) A study of operating systems, processing of l/O and interrupt service, buffering, spooling and memory management services, security and error protection, systems accounting and resource allocation, multi-programming and multi-processing, inter-process communication, includes the study and use of several operating systems. Prereq: CSCI 325.

CSCI 490 - Advanced Topics in Computer Science [Topic title]

(1-3) Lectures and/or special projects related to specialized advanced topics in computer science. Course may be repeated for a maximum of six (6) hours credit. May be offered on a pass/fail basis. (as needed)
Prereq: Departmental approval required.

CSCI 495 - Senior Design Project

(3) Selected topics in computer science including trends, ethics, employment, and graduate school opportunities. Small teams will complete senior design projects. Teams will present results at a local conference and summarize work in a technical report. Prereq: CSCI 302 and 325, computer science major, senior standing, and permission of department faculty.

About Computer Science

Learn about the mission and goals of our Computer Science program.

Learn More >