|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Computer and Information Science Elective and Special Topics Course DescriptionsSpring 2009
Undergraduate Elective Offering
|
| CSci 361-01 | Introduction to Computer Networks, Dr. Tobin Maginnis | |
| CSci 405-01 | Computer Simulation, Dr. Stephen Rice | |
| CSci 490-01 | *Parallel Programming, Dr. Philip Rhodes | |
| CSci 523-01 | Operating Systems, Dr. Paul Ruth | |
| CSci 581-01 | *Robotics, Dr. Yixin Chen | |
| CSci 582-01 | *Computer Graphics and Animation, Dr. Jianxia Xue |
| CSci 523-01 | Operating Systems, Dr. Paul Ruth | |
| CSci 581-01 | *Robotics, Dr. Yixin Chen | |
| CSci 582-01 | *Computer Graphics and Animation, Dr. Jianxia Xue | |
| Engr 596-63 | *Computer Simulation, Dr. Stephen Rice | |
| Engr 598-62 | *Parallel Programming, Dr. Philip Rhodes | |
| Engr 661-01 | Computer Networks II, Dr. Tobin Maginnis | |
| Engr 691-06 | *Software Language Engineering, Dr. Conrad Cunningham | |
| Engr 692-65 | *Computational Biology, Dr. Dawn Wilkins |
| Instructor: | Stephen V. Rice, Ph.D. (rice at cs.olemiss.edu) | |
| Assistant Professor | ||
| Computer and Information Science | ||
| Time and Place: | 9:30 TuTh, Weir 106 | |
| Prerequisites: | CSci 211 and Math 262 or graduate standing with appropriate background | |
| Textbook: | Simulation Modeling and Analysis | |
| Averill M. Law | ||
| Fourth Edition | ||
| McGraw-Hill, 2007 | ||
| ISBN 0-07-298843-6 |
We use computers to imitate, or simulate, the operations of a facility or process called a system. This imitation is a model of the system. Computer simulation has been used to analyze the operation and behavior of many kinds of systems, including computer networks, fast-food restaurants, city traffic, gold/silver mines, shipping ports, and the stock market.
This course introduces the tools and techniques for writing computer programs that model and simulate systems. First the students learn to implement discrete-event simulation programs using a general-purpose programming language, such as C, C++, or Java. Then the students learn to use two simulation programming languages, SIMSCRIPT and GPSS.
After completing this course, a student should be able to:
| Instructor: | Philip Rhodes, Ph.D. (rhodes at cs.olemiss.edu) | |
| Assistant Professor | ||
| Computer and Information Science | ||
| Time and Place: | 4:00 TuTh, Weir 235 | |
| Prerequisites: | CSci 211 and 223 or graduate standing with appropriate background | |
| Textbook: | Principles of Parallel Programming | |
| Lin and Larry Snyder | ||
| Addison-Wesley, 2008 | ||
| ISBN 0321487907 |
As the drive to increase clock speeds on traditional CPUs runs up against Moore's Law and the rules of physics, designers have increasingly turned to parallelism to improve performance. Cluster and Grid computing, multicore designs, and even programming on graphics cards are all recent examples of parallel approaches to computation. However, programming for these architectures is very different from the serial case, requiring new algorithms, tools, and programming methodologies. This course will explore the design and implementation of parallel programs on several different architectures.
Upon successful completion of this course, the students should be able to:
| Instructor: | Paul M. Ruth, Ph.D. (ruth at cs.olemiss.edu) | |
| Assistant Professor | ||
| Computer and Information Science | ||
| Time and Place: | 12:00 MWF, Weir 235 | |
| Prerequisites: | CSci 423, CSci 501, or graduate standing with appropriate background. (Interested students with sufficient C programming experience can successfully complete the course.) | |
| Textbook: | TBD | |
An operating system is the fundamental software that runs on modern personal computers, servers, and embedded devices. Understanding the functionality and limitations of modern operating systems is integral to the design and implementation of computer software, as well as, the design and production of computer hardware. This course is an ideal complement to any graduate or undergraduate computer science program of study. For that matter, the course would be valuable for any student wishing a deeper understanding of how computing systems work or who want to use computers to monitor or control other processes.
This course uses lecture and readings to examine the traditional theoretical aspects of operating systems including: processes, interprocess communication (IPC), scheduling, synchronization, memory management, virtual memory, input/output systems, and file systems.
Additionally, the course augments the theory with an innovative hands-on project. The project includes the study and implementation a version of the Xinu operating system for a commodity embedded device (the Linksys WRT54GL router). Students will utilize a laboratory including 12 WRT54GL routers to implement functionality for the following parts of the Xinu operating system: synchronous and asynchronous input/output device driver, process creation, context switch, process scheduling mechanism, process scheduling algorithms, memory management, and a file system.
The project is both accessible to students and provides familiarity with increasingly prolific embedded devices. The accessibility is a result of using the simple, but fully functional, Xinu operating system in combination with the WRT54GL router's simple RISC MIPS architecture. Further, the use of a WRT54GL router gives students valuable hands-on experience programming real embedded devices.
For more information see the University of Mississippi's Xinu Laboratory web site (http://www.cs.olemiss.edu/~ruth/xinu) or contact Dr. Ruth (ruth at cs dot olemiss dot edu).
| Instructor: | Yixin Chen, Ph.D. (ychen at cs.olemiss.edu) | |
| Assistant Professor | ||
| Computer and Information Science | ||
| Time and Place: | 9:00 p.m. MWF, Weir 106 | |
| Prerequisites: | CSci 211 and 223 or graduate standing with appropriate background | |
| Textbook: | Artificial Intelligence: A Modern Approach | |
| S. Russell and P. Norvig | ||
| Prentice Hall | ||
This course introduces the basic concepts in robotics and artificial intelligence (AI). This course will also provide students hands-on experience in the design, constructing, and programming robots that are driven by a micro-controller (LEGO NXT mobile robots).
Upon completion of this course, students should be able to explain the basic knowledge representation, problem solving, and learning methods of AI; develop intelligent systems by assembling solutions to concrete computational problems; understand the role of knowledge representation, problem solving, and learning in intelligent-system engineering, and appreciate the role of problem solving, vision, and language in understanding human intelligence from a computational perspective.
| Instructor: | Jianxia Xue, Ph.D. (jxue at cs.olemiss.edu) | |
| Instructor and Adjunct Assistant Professor | ||
| Computer and Information Science | ||
| Time and Place: | 1:00 p.m. MWF, Weir 106 | |
| Prerequisites: | CSci 211 and 223 or graduate standing with appropriate background | |
| Textbook: | Computer Animation: Algorithms and Techniques | |
| Rick Parent | ||
| 2nd Edition | ||
| Morgan-Kaufmann, 2007 | ||
This course covers the fundamental computational methods of computer-generated 3D animations for applications in film production and computer games. The focus of the course is on understanding and implementing fundamental algorithms used in animation softwares. This course will not cover writing animation scripts using any particular animation softwares, nor the production pipeline of generating computer animation films such as story-boarding, scene composition, lighting, and sound track generation. By the end of the course, the students should be able to:
Currently, the instructor plans to cover the following topics in computer animations:
There will be four computer assignments, including:
Please note that all the programming assignments will be built on top of an existing rendering system, so the students can focus on the animation engine only. The fundamentals of OpenGL will be reviewed at the beginning of the course.
There will be a final project, preferably in teams of two people, producing a character animation sequence with a minimum length of 30 seconds. The animation needs to be generated from algorithms that involve at least three techniques covered in the course (e.g. inverse kinematics, key-frame blending, particle simulations, crowd, MoCap data-driven).
There will be a final exam in the form of a series of short questions to let the students show their knowledge on the theoretical concepts of computer animation.
Computer animations have been widely used in film productions and games, yet there are still many challenges to improve the automation of computer-generated animations. This study opens the door for research and development in the field of computer animation and simulations.
| Instructor: | H. Conrad Cunningham, D.Sc. (cunningham at cs.olemiss.edu) | |
| Professor and Chair | ||
| Computer and Information Science | ||
| Time and Place: | 11:00 TuTh, Weir 106 | |
| Prerequisites: | Graduate standing with an appropriate background. The Fall 2008 Multiparadigm Programming in Scala special topic is good preparation but is not absolutely required. | |
| Textbook: | Specific materials have not yet been identified. The course materials may include reference books on the languages used, but the content related to domain-specific languages will likely come from technical papers and Web materials |
In recent years, interest in domain-specific languages (DSLs) and language-oriented programming has grown in both industry and academia. For example, the popular Ruby on Rails web framework consists of several DSLs embedded in Ruby. Microsoft also supports DSL development in its Visual Studio toolset. On the Java platform, JMock is an example of an internal DSL to support software unit testing.
This study focuses on the design and implementation of external and internal DSLs. A DSL is a simple language with a syntax and semantics focused on a specific application area, perhaps meant to be used by experts on that application who are not necessarily expert programmers. An external DSL consists of a language separate from the DSL processor's host language. An internal DSL consists of the restricted usage of the host language itself to create the specialized language syntax and semantics.
Likely topics consist of the principles and practice of DSL development including the use of techniques such as commonality/variability analysis to design languages, syntactic processing to build abstract syntax trees (ASTs), and implementation of simple interpreters to evaluate the ASTs. The study will use an evolving set of design patterns identified by experts on DSLs and utilize language or API features such as parser combinators, function closures, algebraic types, and metaprogramming.
The course's case studies and projects will use one or two contemporary languages with good support for DSLs. These include the statically typed, multiparadigm language Scala and the dynamically typed application languages Ruby and Groovy. Scala includes a flexible syntax, type inferencing, closures, a powerful set of parser combinators, built-in support for XML processing, and other features of interest for language processing or DSL construction. Ruby and Groovy are also very flexible languages with powerful reflexive metaprogramming facilities (i.e., the ability of a program to inspect and modify itself) that are useful in DSL implementation.
Upon successful completion of this course, the students should:
| Instructor: | Dawn E. Wilkins, PhD (dwilkins at cs.olemiss.edu) | |
| Associate Professor | ||
| Computer and Information Science | ||
| Time and Place: | 10:00 MWF, Weir 106 | |
| Prerequisites: | Graduate standing with appropriate backgrounds. The students need to have completed a course in algorithm analysis such as CSci 433/502 or have the consent of instructor. | |
| No background in biology or genetics is assumed. The textbook has a chapter that will serve as a primer, and the biological problems are described "just in time" as appropriate solution techniques are considered. | ||
| Textbook: | An Introduction to Bioinformatics Algorithms | |
| Neil C. Jones and Pavel A. Pevzner | ||
| MIT Press, 2004 | ||
| ISBN 0-262-10106-8 | ||
This is a course on algorithms, with interesting applications drawn from the biological domain.
Computing topics covered include: algorithm analysis, exhaustive search, greedy algorithms, dynamic programming, divide-and-conquer techniques, graph algorithms, combinatorial pattern matching, randomized algorithms, and hidden Markov models.
The biological problems considered will include: mapping DNA, sequencing DNA, comparing sequences, gene prediction, finding signals, protein identification, DNA microarray analysis, and molecular evolution.