<?xml version="1.0" encoding="UTF-8"?>

<!--
::===========================================================================::
Bayesian Advisor Project :: Preference Elicitation Tool - Input XML 
Instance Document
Started June-2002 by Christina Knapp (ck38@csr.uky.edu)
Version 1, 6/3/02

This is an example XML instance document for the archetype/hierarchy 
preference elicitation tool.  For more information about XML instance 
documentation, see http://www.w3.org/XML.
::===========================================================================::
-->

<model type="input" 
       version="1.0" 
       xmlns:xsi="http://www.w3.org/2001/SMLSchema-instance" 
       xmlns="http://www.cs.uky.edu/bap/prefs" 
       xsi:schemaLocation="schema.xsd">

<!-- 
::===========================================================================::
ATTRIBUTE DEFINITION SECTION.  An attribute is something the user 
wishes the decision maker (i.e. agent) to take into account as it searches 
for valid outcomes.  The following <attribute> elements can be linked to 
any <archetype> element later in the instance document.  You can define as 
many <attribute> elements as you like, but keep in mind that the 'name' 
attrbute must be unique within the scope of this instance document.  Also, 
'name' is used as a key referenced by the 'value' attribute of the <allow> 
and <warn> elements.
::===========================================================================::
-->

<attribute name="TimeOfDay">
   <description>
      The time of day you prefer classes you take to meet.
   </description>
   <prompt>
      Select your time of day preference:
   </prompt>
   <value name="Morning">
      <description> 
         Classes that start between 8:00 and 10:00 AM.
      </description>
   </value>
   <value name="Noon">
      <description>
         Classes that start between 11:00 AM and 1:00 PM.
      </description>
   </value>
   <value name="Afternoon">
      <description>
         Classes that start between 1:00 and 5:00 PM.
      </description>
   </value>
   <value name="Evening">
      <description>
         Classes that start at 5:00 PM or later.
      </description>
   </value>
</attribute>

<attribute name="ClassDays">
   <description>
      The days of the week that you prefer classes you take to meet.
   </description>
   <prompt>
      Select your class day preference:
   </prompt>
   <value name="MWF">
      <description>
         Classes that meet on Mondays, Wednesdays, and Fridays.
      </description>
   </value>
   <value name="TT">
      <description>
         Classes that meet on Tuesdays and Thursdays.
      </description>
   </value>
</attribute>

<attribute name="FreeTime">
   <description>
      The desired amount of hours of free time in a week.
   </description>
   <prompt>
      Select your preference for the amount (in hours) of free time you want:
   </prompt>
   <value name="10 Hours or Fewer Free Time">
      <description>
         10 Hours or fewer of free time per week.
      </description>
   </value>
   <value name="10-15 Hours Free Time">
      <description>
         Between 10 and 15 hours of free time per week.
      </description>
   </value>
   <value name="15-20 Hours Free Time">
      <description>
         Between 15 and 20 hours of free time per week.
      </description>
   </value>
   <value name="20-25 Hours of Free Time">
      <description>
         Between 20 and 25 hours of free time per week.
      </description>
   </value>
   <value name="25 Hours or More Free Time">
      <description>
         25 or more hours of free time per week.
      </description>
   </value>
</attribute>

<attribute name="Subject">
   <description>
      The types of subjects you are interested in studying.
   </description>
   <prompt>
      Select your preference for the following subjects:
   </prompt>
   <value name="Databases">
      <description>
         Courses dealing with Databases and their architectures.
      </description>
   </value>
   <value name="Operating Systems">
      <description>
        Courses demonstrating the underlying concepts of operating systems.
      </description>
   </value>
   <value name="Theory">
      <description>
         Courses discussing theoretical issues in Computer Science, including 
	 Numerical Analysis, Logic, and Discrete Mathematics.
      </description>
   </value>
   <value name="Networking">
      <description>
         Courses in the field of networking.
      </description>
   </value>
   <value name="Artificial Intelligence">
      <description>
         Courses dealing with Artificial Intelligence.
      </description>
   </value>
   <value name="Software Engineering">
      <description>
         Courses in the field of software engineering.
      </description>
   </value>
   <value name="Graphics">
      <description>
         Courses dealing with computer graphics, visualization, and multimedia.
      </description>
   </value>
   <value name="Humanities">
      <description>
         Courses dealing with humanities.
      </description>
   </value>
   <value name="Social Sciences">
      <description>
         Courses dealing with the social sciences.
      </description>
   </value>
   <value name="Nautral Sciences">
      <description>
         Courses dealing with the natural sciences.
      </description>
   </value>
   <value name="Math and Statistics">
      <description>
         Courses dealing with mathematics and statistics.
      </description>
   </value>
   <value name="Foreign Languages">
      <description>
         Courses dealing with other languages.
      </description>
   </value>
   <value name="Communication Classes">
      <description>
         Courses dealing with the communication requirement.
      </description>
   </value>
   <value name="English">
      <description>
         Courses dealing with the study of English.
      </description>
   </value>
   <value name="Business and Economics">
      <description>
         Courses dealing with the study of business and economics.
      </description>
   </value>
   <value name="Engineering">
      <description>
         Courses dealing with engineering disciplines.
      </description>
   </value>
   <value name="Electrical Engineering">
      <description>
         Courses in the field of electrical engineering.
      </description>
   </value>
</attribute>

<attribute name="AmountOfProgramming">
   <description>
      The different types of programming assignments done in a semester.
   </description>
   <prompt>
      Select your preference for the following types of homework:
   </prompt>
   <value name="Projects">
      <description>
         Large Projects that are considered to be term projects.
      </description>
   </value>
   <value name="Assignments">
      <description>
         Smaller projects that occur more frequently than Projects.
      </description>
   </value>
   <value name="None">
      <description>
         Prefer no homework at all.
      </description>
   </value>
</attribute>

<attribute name="ClassSize">
   <description>
      The number of people in a class that you are enrolled in.
   </description>
   <prompt>
      Select your preference for the following class sizes:
   </prompt>
   <value name="Class Size of 25 or Fewer">
      <description>
         25 students or fewer enrolled in a class.
      </description>
   </value>
   <value name="Class Size of 25-50">
      <description>
         25 to 50 students enrolled in a class.
      </description>
   </value>
   <value name="Class Size of 50-100">
      <description>
         50 to 100 students enrolled in a class.
      </description>
   </value>
   <value name="Class Size of 100-200">
      <description>
         100 to 200 students enrolled in a class.
      </description>
   </value>
   <value name="Class Size of 200 or more">
      <description>
         200 or more students enrolled in a class.
      </description>
   </value>
</attribute>

<attribute name="ClassLocation">
   <description>
      The building that a class is taught in.
   </description>
   <prompt>
      Select your preference for the following buildings for classes:
   </prompt>
   <value name="White Hall">
      <description>
         Classroom Building on north side of campus.
      </description>
   </value>
   <value name="Engineering Complex">
      <description>
         Includes Andersaon Hall, ASTeCC, Raymond Building (Civil Engineering),
	 CRMS (Robotics Facility), and McVey Hall.  Located in Central Campus.
      </description>
   </value>
   <value name="CB and POT">
      <description>
         Located in Central Campus.
      </description>
   </value>
   <value name="Other Buildings">
      <description>
         Other Buildings on the UK campus.
      </description>
   </value>
</attribute>

<attribute name="Ancillary">
   <description>
      Valuable non-technical skills.
   </description>
   <prompt>
      Select your preference for the following subjects:
   </prompt>
   <value name="Communication">
      <description>
         Verbally expressing oneself to others.
      </description>
   </value>
   <value name="Writing">
      <description>
         Expressing oneself clearly in writing.
      </description>
   </value>
   <value name="Technical Writing">
      <description>
         Preparing papers for publishment in the professional realm.
      </description>
   </value>
   <value name="Grant Writing">
      <description>
         Learning how to write grants.
      </description>
   </value>
   <value name="Teaching">
      <description>
         Learning ways to teach others.
      </description>
   </value>
   <value name="Technical Presentation">
      <description>
         Learning how to present research clearly.
      </description>
   </value>
   <value name="Managing Others">
      <description>
         Learning skills desired for leadership.
      </description>
   </value>
   <value name="Project Designer">
      <description>
         Learning skills needed to design projects.
      </description>
   </value>
</attribute>

<attribute name="CourseLoad">
   <description>
      How many credithours you would like to take in a semester.
   </description>
   <prompt>
      Select your preference for the following course load sizes:
   </prompt>
   <value name="Fewer than 12 Hours">
      <description>
         Taking fewer than 12 credit hours a semester, or part-time study.
      </description>
   </value>
   <value name="12-14 Hours">
      <description>
         Taking between 12 and 14 credit hours a semester.
      </description>
   </value>
   <value name="15-17 Hours">
      <description>
         Taking between 15 and 17 credit hours a semester.
      </description>
   </value>
   <value name="18 or more Hours">
      <description>
         Taking 18 or more credit hours in a semester.
      </description>
   </value>
</attribute>

<attribute name="Professor">
   <description>
      Which professors you prefer.
   </description>
   <prompt>
      Select your preference for the following professors:
   </prompt>
   <value name="Baxter">
      <description>
         Associate Professor and Associate Chair. Research areas include 
	 programming and systems, performance monitoring and evaluation, 
	 and database systems.
      </description>
   </value>
   <value name="Calvert">
      <description>
         Associate Professor.  Research areas include computer network 
	 protocols and architectures, active networks, network security, 
	 and formal methods.  
      </description>
   </value>
   <value name="Cheng">
      <description>
         Professor.  Research areas include computer-aided geometric 
	 design, computer graphics, and collaborative CAD.
      </description>
   </value>
   <value name="Dekhtyar">
      <description>
         Assistant Professor.  Research areas include databases.
      </description>
   </value>
   <value name="Douglas">
      <description>
         Professor.  Research areas include computational sciences, 
	 parallel computing, and numerical analysis.
      </description>
   </value>
   <value name="Fei">
      <description>
         Assistant Professor.  Research areas include networking.
      </description>
   </value>
   <value name="Finkel">
      <description>
         Professor.  Research areas include operating systems, distributed 
	 algorithms, and programming languages.
      </description>
   </value>
   <value name="Goldsmith">
      <description>
         Associate Professor.  Research areas include stochastic models, 
	 planning with Bayes nets and POMPDs, computational learning 
	 theory, and computational complexity.
      </description>
   </value>
   <value name="Griffioen">
      <description>
         Associate Professor.  Research areas include computer networks 
	 and operating systems.
      </description>
   </value>
   <value name="Hayes">
      <description>
         Assistant Professor.  Research areas include verification and 
	 validation, interface-based system testing, automatic test data 
	 generation, software maintainability, and static analysis.
      </description>
   </value>
   <value name="Jaromczyk">
      <description>
         Associate Professor.  Research areas include computational 
	 geometry and algorithms.
      </description>
   </value>
   <value name="Jaynes">
      <description>
         Assistant Professor.  Research areas include computer vision, 
	 image processing, and artificial intelligence and perception.
      </description>
   </value>
   <value name="Keen">
      <description>
         Lecturer.  Teaches CS101, CS115, and CS215.
      </description>
   </value>
   <value name="Klapper">
      <description>
         Professor.  Research areas include cryptography and spread 
	 spectrum communications.
      </description>
   </value>
   <value name="Kubota">
      <description>
         Professor (joint with Math).  Research areas include number 
	 theory and operating systems.
      </description>
   </value>
   <value name="Manivannan">
      <description>
         Assistant Professor.  Research areas include distributed systems, 
	 operating systems, and mobile computing systems.
      </description>
   </value>
   <value name="Marek">
      <description>
         Professor.  Research areas include logical foundations of AI, 
	 theory of databases, and logic programming.
      </description>
   </value>
   <value name="Piwowarski">
      <description>
         Lecturer.  Teaches CS100, CS215, and CS216.
      </description>
   </value>
   <value name="Seales">
      <description>
         Associate Professor.  Research areas include image processing and 
	 graphics.
      </description>
   </value>
   <value name="Singhal">
      <description>
         Professor and Garner Group Endowed Chair in Networking.  Research 
	 areas include distributed computing systems, wireless networks, 
 	 and computer security.
      </description>
   </value>
   <value name="Truszczynski">
      <description>
         Professor and Chair.  Research areas include graph theory, 
	 combinatorics, and logical foundations of AI.
      </description>
   </value>
   <value name="Wasilkowski">
      <description>
         Professor and Director of Graduate Studies.  Research areas 
	 include computational complexity and numerical analysis.
      </description>
   </value>
   <value name="Zhang">
      <description>
         Assistant Professor.  Research areas include scientific and 
	 parallel computing, computer simulation, and information 
	 retrieval and data mining.
      </description>
   </value>
</attribute>

<attribute name="GenderOfProfessor">
   <description>
      Do you care about the professor's gender?
   </description>
   <prompt>
      Select your preference for the following:
   </prompt>
   <value name="Female">
      <description>
         Female Professor at UK.
      </description>
   </value>
   <value name="Male">
      <description>
         Male Professor at UK.
      </description>
   </value>
   <value name="No Preference">
      <description>
         The gender of professor does not matter to me.
      </description>
   </value>
</attribute>

<attribute name="Course">
   <description>
      The courses offered and required by the CS department at UK.
   </description>
   <prompt>
      Select your preference for the following courses:
   </prompt>
   <value name="CS 100-The Computer Science Profession">
      <description>
         An introductory seminar which covers the fundamental activities, 
	 principles, and ethics of the computer science profession.  An 
	 overview of the discipline of computer science, examples of careers,
       	 the history of computing, and experience with elementary computing
	 tools are included.
      </description>
   </value>
   <value name="CS 115-Introduction to Computer Programming">
      <description>
         This course covers introductory skills in computer programming 
	 using an object-oriented computer programming language.  There is 
	 an emphasis on both the principles and practice of computer 
	 programming.  Also covered are principles of problem solving by 
	 computer. Completion of a number of programming assignments is 
	 manditory.
      </description>
   </value>
   <value name="CS 215-Introduction to Program Design, Abstraction, and 
Problem Solving">
      <description>
         This course covers introductory object-oriented problem solving, 
	 design, and programming engineering.  Fundamental elements of 
	 data structures and algorithm design will also be addressed.  An
	 equally balanced effort will be devoted to the three main threads
	 in the course:  concepts, programming language skills, and rudiments
	 of object-oriented programming and software engineering.
         Prereqs: CS-115.
      </description>
   </value>
   <value name="CS 216-Introduction to Software Engineering">
      <description>
         Software engineering topics to include:  life cycles, metrics, 
	 requirements specifications, design methodologies, validation and 
	 verification, testing, reliability and project planning.  Students 
	 will study and practice use of object-oriented design techniques
	 and software tools in a modern development environment.
	 Implementation of large programming projects will be stressed.
	 Prereqs: CS-215.
      </description>
   </value>
   <value name="CS 221-First Course in Computer Science for Engineers">
      <description>
         Characteristics of a procedure-oriented language; description of 
	 a computer as to internal structure and the representation of 
	 information; introduction to algorithms.  Emphasis will be placed
	 on the solution of characteristic problems arising in engineering.
      </description>
   </value>
   <value name="CS 275-Discrete Mathematics">
      <description>
         Topics in discrete math aimed at applications in Computer 
	 Science.  Fundamental principles:  set theory, induction, 
	 relations, functions, Boolean algebra.  
	 Techniques of counting:  permutations, combinations, recurrences,
	 algorithms to generate them.  Introduction to graphs and trees.
         Prereqs: MA-113 and CS-115.
      </description>
   </value>
   <value name="CS 315-Algorithm Design and Analysis">
      <description>
         Introduction to the design and analysis of algorithms.  Asymptotic 
	 analysis of time complexity.  Proofs of correctness.  Algorithms 
	 and advanced data structures for searching and sorting lists, 
	 graph algorithms, numeric algorithms, and string algorithms.  
	 Polynomial time computation and NP-completeness.
         Prereqs: CS-215, CS-275, and engineering standing.
      </description>
   </value>
   <value name="CS 321-Introduction to Numerical Methods">
      <description>
         Floating point arithmetic.  Numerical linear algebra; elimination 
	 with partial pivoting and scaling.  Polynomial and piecewise 
	 interpolation.  Least squares approximation.  Numerical 
	 integration. Roots of nonlinear equations.  Ordinary differential 
	 equations. Laboratory exercises using software packages available at
	 computer center.
	 Prereqs:MA-213 and CS-221 or equivalent.  Knowledge of a 
	 procedural computer language is required. (Same as MA-321).
      </description>
   </value>
   <value name="CS 335-Graphics and Multimedia">
      <description>
         This course focuses on the graphical human-machine interface, 
	 covering the principles of windowing systems, graphical interface 
	 design and implementation, and processing graphical data.  There is 
	 an emphasis on medium-scale programming projects wiht graphical user
	 interfaces using a high-level procedural language and concepts such 
	 as object-oriented design.
	 Prereqs: CS-216 and engineering standing.
      </description>
   </value>
   <value name="CS 375-Logic and Theory of Computing">
      <description>
         Topics in logic and discrete math aimed at applications in 
	 Computer Science.  Propositional calculus: truth tables, logical 
	 relations, proofs, tautologies, soundness.  
	 Predicate calculus: variables, quantifiers, equivalences.  
	 Models of computation: logic circuits, finite automata, 
	 Turing machines.
	 Prereqs: MA-113, CS-215, CS-275, and engineering standing.
      </description>
   </value>
   <value name="CS/EE 380-Microcomputer Organization">
      <description>
         Hardware and software organization of a typical computer; machine 
	 language and assembler language programming, interfacing 
	 peripheral devices, and input-output programming; real-time computer
	 applications, laboratory included. (Same as EE-380.)
	 Prereqs: EE-280.
      </description>
   </value>
   <value name="CS 395-Independent Work in Computer Science">
      <description>
         A course for computer science majors only.  A problem, approved 
	 by the chairperson of the department, provides an opportunity for 
	 individual research and study.  May be repeated to a maximum of 
	 six credits.
	 Prereqs: Major and a standing of 3.0 in the department and 
	 consent of instructor.
      </description>
   </value>
   <value name="CS 405G-Introduction to Database Systems">
      <description>
         Study of fundamental concepts behind the design, implementation 
	 and application of database systems.  Brief review of 
	 entity-relationship, hierarchical and network database models and an 
	 in-depth coverage of the relational model including relational 
	 algebra and calculi, relational database theory, concepts in schema 
	 design and commercial database languages.
	 Prereqs: CS-315 and engineering standing.
      </description>
   </value>
   <value name="CS 441G-Compilers for Algorithmic Languages">
      <description>
         The techniques of processing, specifying, and translating 
	 high-level computer languages are studied.  Topics include finite 
	 state machines and lexical analysis, context-free grammars for  
	 language specification, attributed translation grammars, language 
	 parsing, and automatic generation of compilers by SLR, LALR, and 
	 other methods for analyzing context-free grammars.  Other topics may 
	 include code optimization, semantics of programming languages, and 
	 top-down parsing.
	 Prereqs: CS-315 and engineering standing.
      </description>
   </value>
   <value name="CS 450G-Fundamentals of Programming Languages">
      <description>
         An intensive study of fundamental programming concepts exhibited 
	 in current high-level languages.  Concepts include recursion, 
	 iteration,coroutines, multiprocessing, backtracking, 
	 pattern-matching, parameter passing methods, data structures, and 
	 storage management.  Object oriented languages and their supporting 
	 run-time environment are covered.
	 Prereqs: CS-315 and engineering standing.
      </description>
   </value>
   <value name="CS 463G-Logic and Artificial Intelligence">
      <description>
         The course covers the basic techniques of artificial intelligence 
	 as well as the logical apparatus necessary for an understanding 
	 of the material.  The students learn techniques for knowledge 
	 representation and appropriate search strategies.  Additionally, 
	 they use artificial intelligence systems.
	 Prereqs: CS-315, CS-375, and engineering standing.
      </description>
   </value>
   <value name="CS 470G-Introduction to Operating Systems">
      <description>
         This course provides an introduction and overview of operating 
	 system design, internals, and administration.  Topics include 
	 classical operating systems (process management, scheduling, memory 
	 management, device drivers, file systems), modern operating systems 
	 concepts (kernel/microkernel designs, concurrency synchronization, 
	 interprocess communication, security and protection), and operating 
	 system administration.
  	 Prereqs: CS-315, CS-380, and engineering standing.
      </description>
   </value>
   <value name="CS 471G-Networking and Distributed Operating Systems">
      <description>
         Broad overview of concepts in networking and distributed 
	 operating systems with examples.  Topics will include protocol 
	 stacks, link, network, transport, and application layers, network 
	 management, the client-server model, remote procedure calls, and 
	 case studies of distributed OS and file systems.
	 Prereqs: CS-315 and engineering standing.
      </description>
   </value>
   <value name="CS 480G-Advanced Computer Architecture">
      <description>
         This course focuses on advance computer architectures and 
	 low-level system software.  Topics include RISC architectures, 
	 vector and multiprocessor architectures, multiprocessor memory 
	 architectures, and multiprocessor interconnection networks.  
	 Peripheral devices such as disk arrays, NICs, video/audio devices 
	 are covered.  Topics also include device drivers, interrupt 
	 processing, advanced assembly language programming techniques, 
	 assemblers, linkers, and loaders. 
	 Prereqs: CS/EE-380 and engineering standing.
     </description>
   </value>
   <value name="CS 485G-Topics in Computer Science">
      <description>
         Studies of emerging research and methods in computer science. A 
	 review and extension of selected topics in the current 
	 literature.  When the course is offered, a specific title with 
	 specific credits, the number of hours in lecture-discussion and 
	 laboratory will be announced.  Lecture/discusion, two-four hours; 
	 laboratory, zero-four hours per week.  May be repeated to a maximum 
	 of eight credits under different subtitles.
	 Prereqs: Variable, given when topic is identified, or consent of 
	 instructor.
      </description>
   </value>
   <value name="CS 499-Senior Design Project">
      <description>
         Projects to design and implement complex systems of current 
	 interest to computer scientists.  Students will work in small 
	 groups.  
	 Prereqs: CS-315 and engineering standing.
      </description>
   </value>
   <value name="CS 505-Intermediate Topics in Database Systems">
      <description>
         The course introduces a variety of modern techniques in database 
	 and distrbuted database systems.  The major topics include, but 
	 are not limited to: object-oriented database systems; distributed, 
	 heterogenerous and web-based databases; knowledge based systems; 
	 physical database design; and security.  The course covers a variety 
	 of methods that allow for a solution of database problems where 
	 the traditional relational database techniques are not viable or not 
	 sufficient.
	 Prereqs: CS-405 or consent of instructor.
      </description>
   </value>
   <value name="CS 515-Algorithms">
      <description>
         The design and analysis of efficient algorithms and data 
	 structures for problems in sorting, searching, graph theory, 
	 combinatorial optimization, computational geometry, and algebraic 
	 computation.  Emphasis on paradigms for design and on rigorous 
	 analysis.  Practical issues pertaining to efficient implementation 
	 and performance measurements.
	 Prereqs: CS-315 or instructor's consent.
      </description>
   </value>
   <value name="CS 521-Computational Sciences">
      <description>
         Study of computer science techniques, tools and resources that 
	 support computational science and engineering computing.  
	 Emphasis on visualization, perfomrance evaluation, high performance 
	 (parallel and distributed) computing.
	 Prereqs: CS-115, CS/EE-380, CS/MA/EGR-537 or consent of 
	 instructor.
      </description>
   </value>
   <value name="CS 535-Intermediate Computer Graphics">
      <description>
         Three-dimensional graphics primatives such as 3D viewing, 
	 lighting, shading, hidden line/surface removal, and more advanced 
	 topics such as solid modeling, image storage and representation, 
	 advanced raster graphics architecture and algorithms, advanced 
	 modeling techniques, and animation will be covered.
	 Prereqs: CS-335, CS-315, CS-321, and engineering standing.
      </description>
   </value>
   <value name="CS 536-Situated Computing">
      <description>
         This course covers the fundatmental concepts involved in 
	 understanding and engineering a closed-loop, sensing, reasoning, 
	 and acuating agent.  Biological models of sensing and actuation 
	 will be discussed and related to modern artificial counterparts.  
	 The course consists of three major topic areas: Vision, Brain, and 
   	 Robotics.  It will introduce students to the issues in computer and 
	 biological vision, to models of belief representation and 
	 modification, architectures for percept processing and reasoning, 
	 machine learning for vision, neural networks, path planning, 
	 intelligent localization based on visual cues, and to forward and 
	 inverse kinematics, intelligent grasping, and the integration of 
	 perception and action.
	 Prereqs: CS-463G or consent of instructor.
      </description>
   </value>
   <value name="CS 537-Numerical Analysis">
      <description>
         Floating point arithmetic.  Direct methods for the solution of 
	 systems of linear algebraic equations.  Polynomial and piecewise 
	 polynomial approximation, orthagonal polynomials.  Numerical 
	 integration:  Newton Cotes formulas and Gaussian quadrature.  
	 Basic methods for initial value problems for ordinary differential 
	 equations.  Applications of software packages to common problems in 
	 science and engineering.
	 Prereqs: CS/MA-321 or equivalent or graduate standing or consent 
	 of instructor.  Knowledge of a procedural computer language is  
	 required. (Same as EGR/MA 537.)
      </description>
   </value>
   <value name="CS 538-Numerical Analysis II">
      <description>
         A continuation of CS/EGR/MA 537.  Roots of a nonlinear equation 
	 and minimization of a function of a single variable.  Linear 
	 difference equations.  Numerical methods for ordinary differential 
	 equations: initial value problems, and elementary techniques for 
	 two-point boundary value problems.
	 Prereqs: A grade of B or better in CS/MA 321 or CS/EGR/MA 537 or 
	 equivalent.  (Same as MA 538.)   
      </description>
   </value>
   <value name="CS 541-Compiler Design">
      <description>
         Intermediate aspects of a compilation process with an emphasis on 
	 front-end issues.  Practical issues in using compiler writing 
	 tools.  Code generation for expressions, control statements and 
	 procedures (including parameter passing).  Symbol tables, runtime 
	 organization for simple and structured variables.  Using compilers 
	 and translators for automation (filters, programs writing programs).
	 Prereqs: CS-441 or insructor's consent.
      </description>
   </value>
   <value name="CS 555-Declarative Programming">
      <description>
         The course covers fundamentals of declarative programming with 
	 emphasis on logic programming.  Topics will include predicate 
	 logic and automated theorem proving techniques such as tableaux and 
	 resolution with unification.  Logic-based programming paradigms, 
	 including constraint logic programming, and logic programming 
	 languages such as PROLOG will also be discussed.
	 Prereqs: CS-315 and CS-375 or consent of instructor.
      </description>
   </value>
   <value name="CS 570-Modern Operating Systems">
      <description>
         The course briefly reviews classical operating system concepts 
	 and then introduces the fundamental paradigms of distributed operating 
	 systems including network communication paradigms, internetworking, 
	 and remote procedure calls.  The course takes an in-depth look at  
	 distributed resource management (e.g., distributed scheduling and 
	 synchornization, DSM and DFS systems).  Topics related to 
	 multiprocessor operating systems, database operating systems and 
	 issues involved in protection of resources are also covered.  Students
	  will inspect and modify actual operating system code.
	 Prereqs: CS-470 or consent of instructor.
      </description>
   </value>
   <value name="CS 571-Computer Networks">
      <description>
         Principles of computer networks using current Internet 
	 technologies and protocols as an example.  Error detection and 
	 recovery; techniques for sharking a multiple-access channel; routing 
	 protocols; end-to-end transport; flow control; congestion avoidance 
	 and control; how to build applications using common network APIs.  
	 If time permits the latter part of the course will cover ancillary 
	 topics including network management and network security.
	 Prereqs: CS-471G or consent of instructor.
      </description>
   </value>
   <value name="CS 575-Models of Computation">
      <description>
         The formal study of computation, including computability and 
	 computation with limited resources.  Church's thesis and models 
	 of computation.  Formal languages and machines as recognizers of 
	 languages.  The Chomsky Hierarchy of language types.  Topics may 
	 include Turing machines or other basic models of computation; 
	 decidability and undecidability; basic complexity theory; finite 
	 automata and regular languages; pushdown automata and 
	 context-free languages; and context-sensitive languages.
	 Prereqs: CS-375 or consent of instructor.
      </description>
   </value>
   <value name="CS 585-Intermediate Topics in Computer Science">
      <description>
         Topics to be selected by staff.  May be repeated to a maximum of 
	 six credits, but only three credits may be earned by a student 
	 under the same topic.
	 Prereqs: Restricted to computer science and electrical engineeirng 
	 majors.  Only by permission.
      </description>
   </value>
   <value name="CS 587-Microcomputer Systems Design">
      <description>
         A course in the design of microcomputer systems for hardware 
	 engineers which includes the following topics: use of uncommitted 
	 logic arrays in instruction set design; hardware support for operating 
	 systems  and programming languages; customizing microcomputers for 
	 specific execution environments; and control of concurrency.
      </description>
   </value>
   <value name="CS 610-Master's Project">
      <description>
         Design and implementation of a large computing project under the 
	 supervision of a member of the graduate faculty.
	 Prereqs: Satisfactory completion of the departmental foundational 
	 examinations.
      </description>
   </value>
   <value name="CS 612-Independent Work in Computer Science">
      <description>
         Reading course for graduate students in computer science.  May be 
	 repeated to a maximum of nine credits.
	 Prereqs: Overall standing of 3.0, and consent of instructor.
      </description>
   </value>
   <value name="CS 616-Software Engineering">
      <description>
         This course provides and overview of the software engineering 
	 discipline: software requirements, software design, software 
	 construction, software management, and software quality.  Testing and 
	 validation techniques will be emphasized throughout the course.  
	 Programs and program fragments will be developed and studied 
	 throughout the course to illustrate specific problems encountered in 
	 the lifecycle development of software systems.
	 Prereqs: At least nine hours of graduate computer science courses.
      </description>
   </value>
   <value name="CS 621-Parallel and Distributed Computing">
      <description>
         This course provides graduate students in computer science and in 
	 other fields of science and engineering with experience of 
	 parallel and distributed computing.  It gives an overview of parallel 
	 and distributed computers, and parallel computation.  The course 
	 addresses architectures, languages, environments, communications, and 
	 parallel programming.  Emphasis on understanding parallel and 
	 distributed computers and portable parallel programming with MPI.
	 Prereqs: Two 500 level CS courses or consent of instructor.
      </description>
   </value>
   <value name="CS 623-Parallel Iterative Computing">
      <description>
         The course will present advanced computational science techniques 
	 needed to support large scale engineering and scientific 
	 computations.  Emphasis on iterative methods for solving large sparse 
	 linear systems and parallel implementations of iterative techniques.
	 Prereqs: CS537 or consent of instructor.
      </description>
   </value>
   <value name="CS 630-Free-form Solid Modeling">
      <description>
         This course covers the path from a conceptual vision of a shape 
	 to a concrete computer-based description that is suitable for 
	 manufacturing.  It covers various solids modeling techniques, 
	 including volume representations, boundary representations, 
	 instantiation and boolean combinations of shapes, and procedural
	 generation such as sweeps.  It discusses effectively data 
	 structures and consistent and unambiguous part description 
	 formats to transfer a shape from a designer to a fabrication 
	 house, as well as problems with maintaining unambiguous topology 
	 in the presence of finite-precision geometry.
  	 Prereqs: CS-535 or consent of the instructor.
      </description>
   </value>
   <value name="CS 631-Computer-Aided Geometric Design">
      <description>
         Overview of current concepts and issues in CAGD with emphasis on 
	 free-form surface design; mathematics of free-form curve and 
	 surface representations, including Coons patches, Gregory patches, 
	 Benzier method, B-splines, NURBS, triangular interpolants, and 
	 their geometric consequences; creating objects with smooth 
	 surfaces, covering assembling spline patches, geometric and 
	 parametric continuity, texture mapping onto complex shapes, 
	 subdivision surfaces, surface evolution, and global optimization.
 	 Prereqs: CS-535 and CS-321, or consent of the instructor.
      </description>
   </value>
   <value name="CS 633-3D Computer Animation">
      <description>
         This course covers the underlying principles and techniques of 3D
	 computer animation.  The topics covered include (1) modeling: the 
	 process of building the forms that will be animated, (2) 
	 rendering: the process of defining how the final picture in the 
	 model will look, (3) animation techniques: the process of 
	 creating inbetween frames and keyframes, (4) compositing and 
	 special effects: the process of assembling various pieces of an 
	 image to get special two-dimensional effects, and (5) recording:
	 the principles and techniques involved in putting animation 
	 frames onto film or video.
	 Prereqs: CS-335 and CS-535, or consent of the instructor.
      </description>
   </value>
   <value name="CS 634-Multimedia Systems">
      <description>
         This course covers the fundamental techniques in multimedia 
	 systems for capturing, managing, accessing and delivering digital
  	 media over local, wide-area and wireless network technology.  The 
	 core topics will emphasize the digital media (images, video, 
	 audio) and the algorithms to generate, store, access, and process 
	 it.  Network concepts will be presented at a high level only.
 	 Prereqs: CS-335 or consent of the instructor.
      </description>
   </value>
   <value name="CS 635-Image Processing">
      <description>
         The course outlines applications of image processing and 
	 addresses basic operations involved.  Topics covered include
	 image perception, transforms, compression enhancement, 
	 restoration, segmentation, and matching.
 	 Prereqs: Graduate standing and consent of instructor (Same as 
	 EE-635).
      </description>
   </value>
   <value name="CS 636-Computer Vision">
      <description>
         This course covers image processing as well as advanced topics in
	 computer vision.  Initial topics include image formation, digital
	 filtering, sensor modeling and feature detection techniques.  
	 The course will discuss how these algorithms are used to address
	 general computer vision problems including three-dimnsional
	 reconstruction, scene understanding, object recognition, and
	 motion analysis.
	 Prereqs: CS-536 or consent of instructor.
      </description>
   </value>
   <value name="CS 637-Exploring Virtual Worlds">
      <description>
         This course covers a mixture of core techniques related to 
	 systems for constructing and modeling virtual environments, such 
	 as model-building, image-based rendering, headmounted hardware,
	 stereo image generation, head-tracking, and immersive display 
	 technology.  The core topics will be presented using textbooks 
	 and papers from the current literature.  A substantial group 
	 project will provide hands-on experience with the concepts, 
	 algorithms, and technology.
	 Prereqs: CS-335 and CS-635.
      </description>
   </value>
   <value name="CS 641-Advanced Compiler Design II">
      <description>
         Optimization, special purpose languages, compiler-compiler, 
	 industry compiler practice.
	 Prereqs: CS-541 or consent of instructor.
      </description>
   </value>
   <value name="CS 642-Discrete Event Systems">
      <description>
         The objective of the course is to prepare students for research 
	 in the field of supervisory control of discrete event systems 
	 (DES's).  Logical models, supervising control.  Stability and 
	 optimal control DES, complexity analysis and other related 
	 research areas will be covered.
      	 Prereqs: Graduate standing or consent of instructor.  (Same as 
	 EE642.)
      </description>
   </value>
   <value name="CS 655-Programming Languages">
      <description>
         This course is an advanced investigation of the design of 
	 programming languages.  It looks at features, not complete 
	 languages, touching on such languages as Ada, CLU, FP, Haskell, 
	 Icon, Lisp, ML, Modula-2, Modula-3, Pascal, Post, Prolog, 
	 Russell, and Smalltalk-80.  Students will not become proficient 
	 in any of these languages, but rather will learn what 
	 contributions each has made to the state of the art in language
 	 design.  Compiler-construction issues will be touched on only in 
	 passing.  Main topics will be control structures, type 
	 mechanisms, functional programming, object-oriented programming,
 	 logic programming, dataflow, strings, and concurrency.  The class
	 will also discuss formal semantics of programming languages, 
	 particularly denotational semantics.  There will be several 
	 written and programming assignments.
	 Prereqs: CS-575 or CS-580.
      </description>
   </value>
   <value name="CS 663-Artificial Intelligence">
      <description>
         Overview of modern artificial intelligence.  Covers topics such 
	 as predicate logic, searching and game trees, knowledge 
	 representation techniques, methods to represent uncertain 
	 information and to reason about it, reasoning about action and 
	 planning, expert systems, machine learning and neural networks.
   	 Prereqs: CS-555 or consent of instructor.
      </description>
   </value>
   <value name="CS 670-Distributed Operating Systems Theory">
      <description>
         This course covers advanced distributed operating system 
	 algorithms and theory.  Topics such as distributed mutual 
	 exclusion, distributed event ordering, distributed deadlock 
	 detection/avoidance, agreement protocols, consistent global 
	 snapshot collections, stable predicate detection, failure 
	 recovery, fault-tolerant consensus, leader election, process 
	 groups and group communication.  Case studies of distributed 
	 operating systems such as LOCUS, Grapevine, V System, ISIS, 
	 Amoeba, Sprite, and Mach will be used as illustrations of the 
	 above algorithms.  
	 Prereqs: CS-570 or consent of instructor.
      </description>
   </value>
   <value name="CS 671-Advanced Computer Networks">
      <description>
         This course is intended to provide students with a  solid 
	 understanding of the state of the art in computer network systems 
	 and protocols.  Topics are covered in some depth, including both 
	 abstract and concrete aspects.  The course begins with a study of 
	 implementations of the current Internet Protocols (TCP, UDP, and 
	 IP); this provides a concrete backdrop for the rest of the 
	 course.  The emphasis is on learning by doing, with programming 
	 and other hands-on assignments associated with most topics.
      	 Prereqs: CS-571 or consent of instructor.
      </description>
   </value>
   <value name="CS 673-Error Correcting Codes">
      <description>
         The problem of correct transmission of data in a noisy 
	 environment.  The design and analysis of codes that efficiently 
	 (in terms of data rate and encryption and decryption speed) 
	 correct errors.  Linear and nonlinear block codes, general 
	 encoding and decoding techniques, fundamental bounds, dual codes
	 cyclic codes.  Specific codes will be studied, including Hamming, 
	 BCH, Reed-Muller, Reed-Solomon, trellis, and convolutional codes.
	 Prereqs: CS-515 or consent of instructor.
      </description>
   </value>
   <value name="CS 674-Heuristic Algorithms">
      <description>
         Solving problems that are intractable.  Exact techniques such as
	 search integer programming and dynamic programming.  
	 Approximation techniques including lcoal search, divide and 
	 conquer, and greedy algorithms.  Methods based upon natural 
	 models such as force-directed iteration, simulated annealing, 
	 genetic algorithms, and neural networks.  Examples will be 
	 selected from active research areas.
	 Prereqs: CS-515 or consent of the instructor.
      </description>
   </value>
   <value name="CS 675-Computability and Complexity">
      <description>
         The formal study of computation, including computability and 
	 computation with limited resources.  Church's thesis and models 
	 of computation.  Topics will include Turing machines or other 
	 basic models of computation; reductions; computable and computably 
	 enumerable sets; Rice's Theorem; decidability and undecidability; 
	 basic complexity theory; NP-completeness and notions of 
	 intractability.  Additional topics may incude primitive recursive 
	 functions and the Grzegorczyk hierarchy; nondeterminism, the 
	 arithmetic hierarchy; formal complexity measures; time and space
	 hierarchy theorems; the polynomial hierarchy and PSPACE; 
	 probabilistic complexity classes; circuit complexity.
         Prereqs: CS-575 or consent of instructor.
      </description>
   </value>
   <value name="CS 676-Parallel Algorithms">
      <description>
         The study of intrinsic parallelism in computational problems and 
	 the design of fast and efficient parallel algorithms.  Parallel 
	 algorithms for prefix computation, selection, merging, sorting, 
	 routing, arithmetic, graph, and systolic algorithms.
	 Prereqs: CS-580.
      </description>
   </value>
   <value name="CS 677-Computational Geometry">
      <description>
         Review of basic algorithms and discussion of active research 
	 topics in the design and analysis of efficient algorithms and 
	 data structures for geometric problems with applications in 
	 computer graphics, pattern matching, manufacturing, robotics, 
	 facility location, and geographic information systems.  Practical 
	 issues pertaining to efficient and accurate implementations, and 
	 related to libraries of geometric data structures and algorithms.
	 Prereqs: CS-515 or consent of instructor.
      </description>
   </value>
   <value name="CS 678-Cryptography">
      <description>
         The study of security in communications and electronic computing.
	 The encryption of data using public key systems, block ciphers, 
	 and stream ciphers.  The basic tools for the design and analysis 
	 of such systems.  Topics may include information theory, 
	 authentication, digital signatures, secret sharing schemes, 
	 complexity theoretic isues, probabilistic encryption, electronic 
	 commerce and others.
	 Prereqs: CS-515 or consent of instructor.
      </description>
   </value>
   <value name="CS 679-Advanced Graph Algorithms">
      <description>
         The design of algorithms for graph problems.  In particular, the 
	 design of efficient algorithms for optimization problems on 
	 graphs, such as minimum spanning tree, shortest paths, maximum 
	 matching and maximum flow problems.  Design of heuristic 
	 (approximation) algorithms.  Search trees, heaps, and their 
	 self-adjusting variants.  Methods of estimating algorithm 
	 performance: worst-case analysis, average-case analysis, 
	 amortization.
 	 Prereqs: CS-580 or consent of instructor.
      </description>
   </value>
   <value name="CS 680-Seminar in Computer Science">
      <description>
         May be repeated to a maximum of four credits.
	 Prereqs: Consent of instructor or two 500-level computer science 
	 courses.
      </description>
   </value>
   <value name="CS 682-Switching Theory">
      <description>
         Application of the symbolic of Boole and Schroeder to the design 
	 of switching systems.  Topics include boolean algebra, Boolean 
	 analysis, the solution of logic equations, the minimization of
	 Boolean formulas, and the diagnosis of failures in digital 
	 systems.
 	 Prereqs: EE-280 or consent of instructor (Same as EE-682).
      </description>
   </value>
   <value name="CS 683-Special Topics in Artificial Intelligence">
      <description>
         Advanced topics in artificial intelligence.  Specific topics may 
	 include but are not limited to: knowledge representation, expert
	 systems and knowledge acquisition, intelligent agents, constraint
	 satisfaction, problem solving and planning, machine learning and 
	 inductive logic programming, deductive databases and logic 
	 programming, natural language understanding and processing.
	 Prereqs: CS-660 or consent of instructor.
      </description>
   </value>
   <value name="CS 684-Special Topics in Vision, Graphics and Multimedia">
      <description>
         Advanced topics in computer graphics, computer vision, and 
	 multimedia systems.  Specific topics include but are not limited 
	 to: isophotes, volume rendering, displacement mapping, geographic
 	 information systems (GIS), remote sensing topics, large scale 
	 sensor networks, video and audio encoding, visualization, 
	 immersive environments, and multimedia interfaces.
	 Prereqs: Consent of instructor.
      </description>
   </value>
   <value name="CS 685-Special Topics in Computer Science">
      <description>
         Topics to be selected by staff.  May be repeated to a maximum of 
	 six credits but only three credits may be earned under the same 
	 topic.
	 Prereqs: Consent of instructor or two 500-level computer science 
	 courses.
      </description>
   </value>
   <value name="CS 686-Special Topics in Theory and Algorithms">
      <description>
         Advanced topics in algorithm design and analysis, and in theory 
	 of computing.  Specific topics may include, but are not limited 
	 to: advanced graph algorithms, parallel algorithms, coding theory 
	 and cryptography, models of computation, recursion theory, 
	 computational complexity.
	 Prereqs: Consent of instructor.
      </description>
   </value>
   <value name="CS 687-Special Topics in Systems">
      <description>
         This course is a special topics course.  The topic and syllabus 
	 will change each time the course is offered, reflecting the 
	 interests of the instructor.  Typically the course will survey new 
	 research in the topic area but may also look back at connonical 
	 and ground breaking work from the past.  Example course topics 
	 might include things such as web operating systems, global file 
	 systems, distributed object-based systems, fault 
	 tolerance/distributed checkpointing, high-speed networking, 
	 network security, active networking, group communication models,
	 compilers for parallel/distributed computing, recent programming 
	 languages, and data mining.
	 Prereqs: Consent of instructor.
      </description>
   </value>
   <value name="CS 688-Neural Networks">
      <description>
         The purpose of this course is to introduce various aspects of the 
	 neural networks and neurocomputing.  The course starts with an 
	 introduction Learning Machines and analyzes various learning 
	 algorithms such as Hebbian, Grossberg's and Kohonen's learning
	 algorithms.  Some of the neural networks that will be studied in 
	 detail are: Backpropogation nets, Hopfield nets, Adaptive 
	 Resonance Theory, Adaline and Madalines, Kohonen's Self learning 
	 nets, BAMs, Neocognition, etc.  Students will implement a minimum 
	 of three learning algorithms.
	 Prereqs: Graduate standing.  (Same as EE-688.)
      </description>
   </value>
   <value name="CS 689-Special Topics in Numerical and Scientific 
Computation">
      <description>
         Advanced topics in numerical analysis, scientific computation, 
	 and complexity of continuous problems.  Specific topics may 
	 include, but are not limited to: iterative methods, advanced 
	 parallel algorithms in numerical linear algebra, multivariate 
	 function approximation and integration.
	 Prereqs: CS-537 or consent of instructor.
      </description>
   </value>
   <value name="CS 748-Master's Thesis Research">
      <description>
         Half-time to full-time work on thesis.  May be repeated to a 
	 maximum of six semesters.
	 Prereqs: All course work toward the degree must be completed.
      </description>
   </value>
   <value name="CS 749-Dissertation Research">
      <description>
   	 Half-time to full-time work on dissertation.  May be repeated to 
	 a maximum of six semesters.
	 Prereqs:  Registration for two full-time semesters of 769 
	 residence credit following the successful completion of the 
	 qualifying exams.
      </description>
   </value>
   <value name="CS 768-Residence Credit for Master's Degree">
      <description>
         This course is from 1-6 credit hours and may be repeated to a 
	 maximum of 12 hours.
      </description>
   </value>
   <value name="CS 769-Residence Credit for Doctor's Degree">
      <description>
         This course is from 0-12 credit hours and may be repeated 
	 indefinitely.
      </description>
   </value>
   <value name="ENG 101-Writing I">
      <description>
         A course in writing emphasizing argument, instruction, and 
	 practice in reading critically, thinking logically, responding to 
	 texts, developing research skills, writing substantial essays 
	 through systematic revision, addressing specific audiences, 
	 expressing ideas in standard and correct English.  Includes 
	 grammar and mechanisms review.  Notes: (a) Credit not available by 
	 special examination; (b) ENG-101 and ENG-102 may not be taken 
	 concurrenty.
      </description>
   </value>
   <value name="ENG 102-Writing II">
      <description>
         Argumentative writing.  Emphasis on development of a fluent, 
	 precise, and versatile prose style.  Continued instruction and 
	 practice in reading critically, thinking locically, responding to 
	 texts, developing research skills, writing substantial essays through 
	 systematic revision, addressing specific audiences, expressing ideas 
	 in standard and correct English.  Notes: (a) Credit not available by 
	 special examination; (b) ENG-101 and ENG-102 may not be taken 
	 concurrently.
	 Prereqs: ENG-101.
      </description>
   </value>
   <value name="MA 113-Calculus I">
      <description>
         A course in one-variable calculus, including topics from analytic 
	 geometry.  Derivatives and integrals of elementary functions 
	 (including the trigonometric functions) with applications.  Lecture, 
	 three hours; recitation, two hours per week.  
	 Prereqs: Math ACTE score of 26 or above, or MA-109 and MA-112, or 
	 MA110, or consent of department.
      </description>
   </value>
   <value name="MA 114-Calculus II">
      <description>
         A continuation of MA-113, primarily stressing techniques of 
	 integration.  Lecture, three hours; recitation, two hours per 
	 week.  
	 Prereqs: High school trigonometry or MA-112; and a grade of C or 
	 better in MA-113 or MA-132.
      </description>
   </value>
   <value name="PHY 231-General University Physics">
      <description> 
         An advanced general course covering the mechanics of solids, 
	 liquids, and gases; heat; and sound.  Lecture, three hours; 
	 recitaiton; one hour.
	 Prereqs or concur: MA-114.
      </description>
   </value>
   <value name="PHY 241-General University Physics Laboratory">
      <description>
         An advanced general laboratory  course with experiments on the 
	 mechanics of solids, liquids, and gases; and on heat and sound.  
	 Prereqs or concur: PHY-231.
      </description>
   </value>
   <value name="PHY 232-General University Physics">
      <description>
         An advanced general course covering electricity, magnetism, and 
	 optics.  Lecture, three hours; recitation, one hour.  This course 
	 is prerequisite to a significant number of courses in this and related
	 areas of study.  
	 Prereqs: PHY 231; Concur: MA-213.
      </description>
   </value>
   <value name="PHY 242-General University Physics Laboratory">
      <description>
         An advanced general laboratory course with expirements 
	 on electricity, magnetism, and light.  This course is 
	 prerequisite to other courses in physics and related areas of study.  
	 Prereqs: PHY-241; Concur: PHY-232.
      </description>
   </value>
   <value name="EE 280-Design of Logic Circuits">
      <description>
         Boolean algebra; combinational logic circuits; synchronous 
	 sequential circuits; asynchronous sequential circuits; design 
	 problems using standard integrated circuits.  
	 Prereqs: CS-115.
      </description>
   </value>
   <value name="MA 213-Calculus III">
      <description>
         MA-213 is a course in multivariate calculus.  Topics include 
	 three-dimensional vectors calculus, partial derivatives, double 
	 and triple integrals, sequences, and infinite series.  Lecture, three 
	 hours; recitation, two hours per week.  
	 Prereqs: MA-114 or equivalent.
      </description>
   </value>
   <value name="MA 322-Matrix Algebra and its Applications">
      <description>
         Algebra of matrices, elementary theory of vector spaces and inner 
	 product spaces, the solution of simultaneous linear equations 
	 using Gaussian elimination and triangular factorization.  
	 Orthogonal projections, pseudo inverse and singular value 
	 decomposition, least squares approximation.  Determinants, eigenvalues
	 and eigenvectors, diagonalization.  
	 Prereqs: MA-114.
      </description>
   </value>
   <value name="STA 281-Probability and Statistics Using Interactive 
Computer Techniques">
      <description>
         The role of chance in expiremental outcomes.  Simple discrete and 
	 continuous probability distributions; combinatorics; moments and 
	 expectations; normal and binomial distributions; computer 
	 simulation and simple Monte Carlo methods.  Descriptive statistics, 
	 charts, and graphs, and elements of statistical inference using 
	 interactive statistical packages (e.g., SCSS and/or MINITAB).
	 Prereqs: CS-150, CS-102, or CS-221.  Coreq: MA-114, MA-132, or 
	 MA-118.
      </description>
   </value>
</attribute>

<attribute name="WorkingOpportunities">
   <description>
      Whether or not you would like to participate in paid work outside of class.
   </description>
   <prompt>
      Select your preference for the following:
   </prompt>
   <value name="Co-op">
      <description>
         Taking time off from school to gain industry experience before graduation.
      </description>
   </value>
   <value name="ResearchProject">
      <description>
         Participating in a research project with a UK professor or outside source.
      </description>
   </value>
</attribute>

<attribute name="GPA">
   <description>
      The Grade Point Average you would like to have each semester.
   </description>
   <prompt>
      Select your preference for desired accumulative GPA:
   </prompt>
   <value name="2.0 and up">
      <description>
         Desired overall GPA is a 2.0 or higher.
      </description>
   </value>
   <value name="2.5 and up">
      <description>
         Desired overall GPA is a 2.5 or higher.
      </description>
   </value>
   <value name="3.0 and up">
      <description>
         Desired overall GPA ia a 3.0 or higher.
      </description>
   </value>
   <value name="3.5 and up">
      <description>
         Desired overall GPA is a 3.5 or higher.
      </description>
   </value>
</attribute>

<attribute name="TimeToGraduation">
   <description>
      The number of semesters you prefer to graduate in.
   </description>
   <prompt>
      Select your preference for number of semesters to graduate in:
   </prompt>
   <value name="Fewer than 5 Semesters">
      <description>
         Obtain a degree from UK in fewer than 5 semesters.
      </description>
   </value>
   <value name="5-6 Semesters">
      <description>
         Obtain a degree from UK in 5 or 6 semesters.
      </description>
   </value>
   <value name="7-8 Semesters">
      <description>
         Obtain a degree from UK in 7 or 8 semesters.
      </description>
   </value>
   <value name="9-10 Semesters">
      <description>
         Obtain a degree from UK in 9 or 10 semesters.
      </description>
   </value>
   <value name="More than 10 Semesters">
      <description>
         Obtain a degree from UK in more than 10 semesters.
      </description>
   </value>
</attribute>

<!-- 
::===========================================================================::
ARCHETYPE DEFINITION SECTION.  An archetype is considered a broad category 
used to describe groups of users and their (perceived) preferences.  You 
can define as many <archetype> elements as you want, but keep in mind that 
the 'name' attribute must be unique within the scope of this instance 
document.
::===========================================================================::
-->

<!-- Archetype 'utility' is ranked on a 0 to 6 scale, where:
  0 = Must not have
  1 = Strongly prefer not to have
  2 = Prefer not to have
  3 = Indifferent
  4 = Prefer to have
  5 = Strongly prefer to have
  6 = Must have
-->

<archetype name="GraduateSchool">
   <description>
      Graduate School.
   </description>
   <prompt>
      I plan on attending graduate school:
   </prompt>
   <attributes>
   <!-- You need to understand the background material if you're going to 
	do research and publish papers. -->
      <allow order="0" value="Theory" utility="5"/>
      <allow order="1" value="Goldsmith" utility="5"/>
      <allow order="2" value="Klapper" utility="5"/>
      <allow order="3" value="Technical Writing" utility="4"/>
      <allow order="4" value="Communications" utility="4"/>
      <allow order="5" value="ResearchProject" utility="5"/>
      <warn order="0" attribute="AmountOfProgramming">It's a good idea to 
	 work on projects on your own outside of class.</warn>
   </attributes>
</archetype>

<archetype name="Industry">
   <description>
      Industry.
   </description>
   <prompt>
      I plan on working in the computer industry:
   </prompt>
   <attributes>
   <!-- This says that database classes are very important for industry 
	work, while networking classes are also important but not as much so.  
	Neither one is given an importance of 6 because it is not necessary to 
	take these subjects every single semester.  Other subjects are included 
	as unknowns on the assumption that a student pursuing a career in 
	industry may have a good idea of what part of the industry they prefer,
 	and may want to tailor their other subjects accordingly. -->   
      <allow order="0" value="Databases" utility="5"/>
      <allow order="1" value="Networking" utility="5"/>
      <allow order="2" value="Theory" utility="1"/>
      <allow order="3" value="Operating Systems" utility="4"/>
      <allow order="4" value="Software Engineering" utility="4"/>
      <allow order="5" value="Communications" utility="4"/>
      <allow order="6" value="Technical Writing" utility="4"/>
      <allow order="7" value="Projects" utility="5"/>
      <allow order="8" value="Co-op" utility="5"/>
      <allow order="9" value="ResearchProject" utility="4"/>
      <warn order="0" attribute="TimeOfDay">Most industry jobs will 
	 require you to keep a regular schedule.  Getting used to rising early 
	 might not be a bad idea.</warn>
      <warn order="1" attribute="WorkingOpportunities">Both Klapper and 
	 Jaromczyk are good professors to work on a research project with.
      </warn>
   </attributes>
</archetype>

<archetype name="MaximizeGPA">
   <description>
      Maximize my GPA.
   </description>
   <prompt>
      I want to maximize my GPA:
   </prompt>
   <attributes>
   <!-- Taking fewer courses is preferable when trying to maximize GPA, 
	because you have more time to concentrate on each course.  TimeOfDay 
	Morning is included as an unknown to encourage the student to think 
	about whether they can preform well in morning classes; this will 
	vary depending on the student -->
      <allow order="0" value="12-14 Hours" utility="5"/>
      <allow order="1" value="Morning" utility="3"/>
      <warn order="0" value="Morning">Many students are not at their best 
	 in the morning.  Unless you are a morning person, you may want to 
	 avoid taking too many early classes. Choose classes at a time 
	 that you are fully alert and can work well.</warn>
      <warn order="1" attribute="AmountOfProgramming">
         Choose homework styles that you are comfortable with and perform 
	 well on.</warn>
   </attributes>
</archetype>

<archetype name="RapidGraduation">
   <description>
      Graduate rapidly.
   </description>
   <prompt>
      I want to graduate as soon as possible:
   </prompt>
   <attributes>
   <!-- The more courses you take (and pass), the faster you graduate. -->
      <allow order="0" value="18 or more Hours" utility="5"/>
      <allow order="1" value="15-17 Hours" utility="4"/>
      <allow order="2" value="12-14 Hours" utility="3"/>
      <allow order="3" value="Fewer than 12 Hours" utility="2"/>
      <warn order="0" attribute="TimeOfDay">Strong restrictions on your 
	available times may prevent you from taking required courses which offer
 	only one or two sections each semester.</warn>
      <warn order="1" attribute="Professor">Strong restrictions on the 
	professors you are willing to work with may prevent you from taking 
	required courses which are only taught by one professor each 
	semester.</warn>
      <warn order="2" attribute="ClassDays">Strong restrictions on the 
	 days of the week that you want classes may prevent you from 
	 taking required courses that are only offered on certain days.</warn>
   </attributes>
</archetype>

<archetype name="Party">
   <description>
      Party like a rock star.
   </description>
   <prompt>
      I plan on partying as much as possible:
   </prompt>
   <attributes>
      <allow order="0" value="Morning" utility="0"/>
      <allow order="1" value="Evening" utility="0"/>
      <allow order="2" value="12-14 Hours" utility="5"/>
      <allow order="3" value="Fewer than 12 Hours" utility="4"/>
      <allow order="4" value="Goldsmith" utility="0"/>
      <allow order="5" value="Klapper" utility="0"/>
      <allow order="6" value="Dekhtyar" utility="0"/>
      <allow order="7" value="Baxter" utility="5"/>
      <allow order="8" value="Projects" utility="1"/>
      <allow order="9" value="Assignments" utility="2"/>
      <allow order="10" value="None" utility="5"/>
      <allow order="11" value="MWF" utility="1"/>
      <allow order="12" value="TT" utility="1"/>
      <warn order="0" value="Morning">Remember, early classes are tricky 
	when you've been out all night drinking.</warn>
      <warn order="1" attribute="CourseLoad">Don't put your course 
	load too high.  The less homework you have, the more time is left 
	over to party.</warn>
      <warn order="2" attribute="Professor">Avoid Goldsmith and Klapper if 
	you can.  They won't give you a break if you're hung over.</warn>
   </attributes>
</archetype>

<archetype name="Part-Timer">
   <description>
      Attending school on a part-time basis.
   </description>
   <prompt>
      I plan on attending school on a part-time basis:
   </prompt>
   <attributes>
      <allow order="0" value="Fewer than 12 Hours" utility="5"/>
      <allow order="1" value="12-14 Hours" utility="5"/>
      <warn order="0" attribute="TimeOfDay">It's good to have all classes 
	 around the same time so that a working day is not broken apart.  
	 Either morning classes or evening classes are good but not both at 
	 the same time.</warn>
      <warn order="1" value="Projects">Projects for a class can take a lot 
	 of time outside of class to complete.</warn>
   </attributes>
</archetype>

<archetype name="Blank">
   <description>
      There are no preset values or attributes.
   </description>
   <prompt>
      I am none of the above.  I want to build my own archetype:
   </prompt>
   </archetype>
</model>
