Mathematics & Computer Science
Academics > Departments and Programs > Mathematics & Computer Science
Computer Science Courses
 

CSCI 115 Computing and the Internet (CW,QS)
A study of core topics in computing, focusing on concepts related to the Internet and its social implications. Topics will include fundamental concepts in computing hardware, networks, Web programming and design, and databases, as well as social issues such as data privacy, intellectual property, and resource accessibility. Students will complete significant projects in Web design and research concerning contemporary issues.

CSCI 135 Robotics Exploration Studio (NS-L)
Introduction to mechanical design and computer programming in the context of building and programming mobile robots. Mechanical design topics will include vectors and forces, Newton's Laws, gears, motors, rotational motion, friction, and the design process. Computer science topics will include an introduction to programming, the programming of sensors and motors, and an introduction to artificial intelligence. Other topics include application of scientific method, teamwork skills, technical writing, and the relationship between the science fiction portrayal of robots and current technological reality. Cross-listed as PHYS 135.

CSCI 150 Foundations of Computer Science I (QS, NS)
Introduction to computer programming, the process of designing and constructing software. It emphasizes techniques for object-oriented design and software development by means of an introduction to the features of the programming language Java, including the notion of classes, and computation due to the interaction between classes. The course also covers some of the most fundamental data structures and algorithms that are useful in Computer Science.

CSCI 151 Foundations of Computer Science II (NS)
Builds on the skills acquired in Foundations of Computer Science I, placing special emphasis on object oriented software design and data abstraction. Students are introduced to some of the most important and frequently used data structures: lists, stacks, queues, trees, graphs, and programming techniques such as recursion. Other topics covered include analysis of algorithm complexity, program verification, and simulations. Programming assignments focus on the design and implementation of algorithms and data structures. Prerequisite: CSCI 150 and either completion of or enrollment in MATH 130.

CSCI 230 Computing Systems Organization
A study of the layers of abstraction composing the design of modern computing systems. Topics include numeric representation, digital logic, the memory hierarchy, machine language and assembly language, the program stack, the system call concept, and the compilation process. Students will be introduced to the C programming language. Prerequisite: CSCI 151.

CSCI 250 Programming Practicum (NS)
Introduction to the computer science concepts necessary for the development of large software systems. Topics will include human-computer interaction, multithreading, network programming, parsing, grammars, testing, and an introduction to databases and software engineering. Programming assignments will emphasize the integration of multiple concepts in the context of realistic software applications. Students will also read and reflect upon case studies in computing ethics, as a way of understanding the societal context in which computer programs are utilized. Prerequisite: CSCI 151.

CSCI 280 Algorithms and Problem-Solving Paradigms (W2)
Introduction to algorithm design strategies that build upon data structures and programming techniques introduced in the first two computer science courses. Strategies discussed will include brute-force, divide-and-conquer, dynamic programming, problem reduction, and greedy algorithms. Particular topics to be covered will include graph traversal and shortest paths, string matching, searching, sorting, and advanced data structures such as balanced search trees, heaps, hash tables, state machines and union-find structures. In addition, the course will include an introduction to complexity theory and the complexity classes P and NP. Prerequisites: CSCI 151 and MATH 240.

CSCI 330 Computer Architecture
A study of the design concepts of major importance in modern computers. Topics will include microprogramming, language-directed computers, parallel processors, and pipeline computers. Emphasis will be placed on the relationship of architecture to programming issues. Prerequisite: CSCI 250.

CSCI 335 Artificial Intelligence
An introduction to the design, analysis, implementation, and application of classical and contemporary algorithms in artificial intelligence, with an emphasis on the development of complete, embodied intelligent agents. Topics will include symbolic planning, robot programming under both subsumption and hybrid paradigms, automated theorem proving, intelligent game-playing programs, rule-based systems, genetic algorithms, neural networks, and machine learning. Prerequisite: Any CSCI course listed 200 or above.

CSCI 340 Database Systems
Introduction to the theoretical and practical aspects of database management systems. Emphasis is on the relational data model. Topics covered include query languages, relational design theory, file structures, and query optimization. Students will implement a database application using Oracle or MySQL, Java Applets, and Servlets. Prerequisite: Any CSCI course listed 200 or above.

CSCI 350 Software Engineering (W2)
In this course, students learn and gain practical experience with software engineering principles and techniques. The practical experience centers on a semester-long team project in which a software development project is carried through all of the stages of the software lifecycle. Topics include requirements analysis, specification, design, and verification. Emphasis will be placed on writing precise requirements, employing formal and semiformal methods to assist in design and verification of software, and using incremental software development. Prerequisite: CSCI 250.

CSCI 360 Survey of Programming Languages (W2)
Concepts and structures governing the design and implementation of modern programming languages. Introduction to concepts of compilers and run-time representations of programming languages. Features of programming languages supporting abstraction. Languages studied will include examples of the procedural, functional, and object-oriented paradigms. Prerequisite: CSCI 230.

CSCI 380 Theory of Computation
Covers basic topics in automata, computability, and complexity theory, including: models of computation (finite automata, Turing machines and RAMs); regular sets and expressions; recursive, r.e., and non-r.e. sets and their basic closure properties; complexity classes; determinism vs. non-determinism, with and without resource bounds; reductions and completeness; practice with NP- and P-completeness proofs; and the complexity of optimization and approximation problems. Prerequisite: MATH 240.

CSCI 385 Scientific Computing
Students will study problems arising from the physical, biological, and/or social sciences and the algorithms and theory used to solve them computationally. Included among the problems will be numerical methods for maximizing a function and solving a differential equation. Prerequisite: MATH 130 and CSCI 150.

CSCI 397 Cross-Disciplinary Project [SP]
In this course intended for computer science minors, the student will complete a semester-long project investigating the relaionship of the student's major with computing. Typically, this will involve developing software to solve a computational problem in the major discipline. This course must be taken as an independent study, supervised by a computer science faculty member in consultation with a faculty member in the student's major discipline. Prerequisite: CSCI 151.

CSCI 410 Technical Communication and Analysis
Focuses on written and oral communication concerning computing, with a secondary emphasis on quantitative performance analysis and reading and research skills. Among the written assignments will be design documents and user documentation; a research paper and presentation will be the culminating assignments. Fundamental communication skills will receive special attention. Prerequisite: Senior standing.

CSCI 420 Operating Systems and Concurrent Computing
Basic principles of modern operating systems design: emphasis on concurrency including problems (nondeterminism), goals (synchronization, exclusion) and methods (semaphores, monitors); resource management including memory management and processor scheduling; file systems; interrupt processing; multithreaded programming. Prerequisite: CSCI 230.

CSCI 490 Advanced Topics in Computer Science
Faculty-student seminar. Content will vary according to the interests of the participants and instructor. Prerequisite: consent of instructor.

CSCI 497 Senior Seminar [UR]
A required seminar for all senior computer science majors which meets throughout the academic year. Each student will develop an individual research project under the direction of a faculty member and present the results both orally and in written form.

 

© Hendrix College • 1600 Washington Avenue, Conway, Arkansas 72032
Contact Admissions Contact the Webmaster • 800-277-9017 • 501-329-6811
Privacy Policy