SACS

The Southern Association of Colleges and Schools Commission on Colleges (SACSCOC) is
the regional body for the accreditation of degree-granting higher education institutions in the eleven U.S. Southern states, Latin America and other international sites approved by the Commission on Colleges that award associate, baccalaureate, master’s, or doctoral degrees.

SACSCOC’s Mission Statement: “The mission of the Southern Association of Colleges and Schools Commission on Colleges is to assure the educational quality and improve the effectiveness of its member institutions.”

ABET

The Accreditation Board for Engineering and Technology (ABET) is an independent organization that ensures the quality of engineering and technology education programs through its accreditation activities. It provides guidance on best practices in engineering and technology education, and assesses the effectiveness of educational programs at meeting the needs of students and their future employers.

The Jonsson School undergraduate engineering programs at UT Dallas are accredited by the Engineering Accreditation Commission of ABET. In 2002, the Erik Jonsson School of Engineering and Computer Science was the first in the United States to offer an ABET-Accredited B.S. degree in telecommunications engineering.

Ability to recognize standard digital circuits and understand their usage
Ability to design a combinational logic circuit based on a truth table requirements
Ability to design a simple combinational logic circuit based on a boolean expr
Ability to build and test a combinational logic circuit on a prototype board
Ability to understand sequential logic elements: latches, flip-flops, registers
Ability to understand and design counters and shifters
Ability to build a sequential logic circuit from a requirements statement

Ability to understand mathematical facts in order to read, comprehend and construct mathematical arguments
Ability to use and apply basic definitions and properties of sets and logic
Ability to specify precise meaning of mathematical statements, using quantifiers and predicates as needed
Ability to recognize and construct valid proofs
Ability to understand and use various types of functions
Ability to understand and construct a proof by induction
Ability to use modular arithmetic as it relates to computer science problems such as hashing and encryption
Ability to recognize and use Boolean algebra applied sets and logic
Ability to understand what an algorithm is and to use algorithms
Ability to use basic counting techniques such as permutations, combinations
Ability to write recursive definitions and functions

Ability to use Big O in context of algorithmic complexity
Ability to construct and solve recurrence relations
Ability to use the principle of inclusion and exclusion to solve problems
Ability to understand binary relations and their applications
Ability to recognize and use equivalence relations and partial orderings
Ability to use and construct graphs and graph terminology
Ability to apply the graph theory concepts of Euler and Hamilton paths
Ability to identify and use planar graphs and shortest path problems
Ability to use and construct trees and tree terminology
Ability to use and construct binary search trees

Ability to utilize the basic language elements of C/C++ to solve problems
Ability to apply Object Oriented Programming (OOP) to solve problems
Ability to create classes of abstract data consisting of variables and functions
Ability to utilize C++ constructors, copy constructors, and destructors
Ability to utilize C++ OOP features using static member data and member functions
Ability to utilize C++ OOP features using operator overloading
Ability to utilize C++ OOP features to generate reusable code using inheritance
Ability to utilize C++ OOP features using polymorphism and virtual member functions
Ability to utilize C++ OOP features to generate reusable code using templates
Ability to create and utilize dynamic data structures such as linked lists
Ability to create and utilize recursive functions

Ability to use the UNIX operating system interactively as a user (commands)
Ability to express algorithmic solutions using shell scripting (utilities)
Ability to understand and use regular expressions
Ability to implement basic security by modifying file and directory permissions
Ability to use interprocess communication to generate complex applications
Ability to use the fork-execute system calls for process creation
Ability to understand and use process scheduling
Ability to use the UNIX programming environment : editor, compiler and linker
Ability to use a UNIX server through a CGI interface using a scripting language
Ability to manipulate files using system calls
Ability to establish inter-machine communication using sockets

Understand the implications of computer technology on society
Understand the ethical dilemmas related to automation of systems
Understand laws that apply to computer systems
Understand the political and management challenges of automation
Understand the economics of the tech industry
Understand the need to protect intellectual property

Apply OOP concepts
Design Java programs that employ the use of file classes
Design using advanced GUI and JavaBeans
Read and use the API documentation
List and describe the primary elements and concepts of application security
Use of Java Technology for networking and distributed programming
Describe different communication models that can be used by a web service
Understand the fundamental concepts of XML and related technologies
Understand concepts related to APIs to interact with Databases

Ability to identify the characteristics of programming paradigms and phases of translation
Ability to understand the importance of formal syntax and semantics
Ability to understand the different forms of binding, visibility, scoping, and lifetime
Ability to understand the semantics of expressions and data types
Ability to understand the concepts of data abstraction, control abstraction and various parameter passing mechanisms
Understand the concepts of encapsulation, information hiding, inheritance, and polymorphism
Ability to understand the concepts of first class values, lists and recursion
Ability to understand the concepts of the functional programming paradigm and logic programming paradigm
Design programs using the functional programming paradigm
Design programs using the logic programming paradigm

Ability to use general asymptotic notations
Ability to solve recurrences
Ability to perform general analysis and proof of correctness of algorithms
Ability to design, analyze and where applicable prove correctness or optimality of algorithms using:

Divide-and-Conquer techniques

Greedy techniques

Dynamic Programming techniques

Ability to perform analysis and proof of correctness of graph algorithms

Ability to understand the goal and applications of computer graphics
Ability to understand and apply coordinate systems and their transformations
Ability to understand basic 2-D drawing primitives and their implementations
Ability to understand and apply 3-D viewing and perspective transformations
Ability to understand hidden-face elimination problems and solutions
Ability to implement some hidden-face elimination algorithms
Ability to understand hidden-line elimination problems and solutions
Ability to implement some hidden-line elimination algorithms
Ability to understand the concepts of fractals and their applications
Ability to develop simple user-interfaces with interactive drawing
Ability to understand basic concepts of computer animation

Ability to formulate a project and goals and communicate to the instructor
Ability to plan the necessary steps required to realize a software development effort
Ability to design a Software component that is realizable, extensible and maintainable
Ability to identify and implement those aspects of Software development necessary to realize a working system
Ability to implement a software system/component in a professional, documented manner
Ability to design and implement a test and integration strategy in the development of a software system.
Ability to capture the functionality of a software system with the appropriate documentation
Ability to map requirements of a design against a deployed working software system

Ability to design finite state automata and regular expressions
Ability to convert among DFA, NFA, regular expressions
Ability to show that a language is not regular
Ability to design Push-Down Automata and Context-Free Grammars
Ability to convert PDAs to context free grammars and vice-versa
Ability to show that a language is not context free

Ability to understand different animation techniques to automate movement
Ability to program animation algorithms in a high level programming language
Ability to program animation with the help of Graphics Libraries
Ability to implement Keyframing and interpolation techniques
Ability to implement Physically based animation, and collision
Ability to build hierarchical articulated figures
Ability to understand and implement forward and inverse kinematics
Ability to implement a behavioral/parametric/ procedural model
Ability to combine two or more animation techniques to control a single object
Ability to wrap algorithmic animation solutions for use in a commercial application

An understanding of basic operating systems security
An understanding of encryption software practice
An understanding of encryption/decryption algorithms and practice
An understanding of symmetric key cryptography
An understanding of basic public-key cryptography
An understanding of stack overflow and practice
An understanding cryptanalysis
An understanding of network security
An understanding of number theory
An understanding of public-key algorithms

Learning to Install an operating system & observing various kernel values
Learning shell programming
Learning kernel implementation of interval timers and use of signals
Learning to dynamically add functionality to the kernel and to add new system calls
Learning to implement shared memory and managing virtual memory
Learning to add a new synchronization mechanism
Understanding the specification of the temporal correctness of real-time systems
Learning scheduler implementation
Implementing a set of directory operations for a simplified file system
Learning to implement file I/O

Understanding of the embedded software development process
Ability to design embedded systems using the outside-in design process
Ability to design and implement real-time embedded systems
Understanding of real-time operating systems
Ability to design real-time schedules for periodic and non-periodic tasks
Ability to perform schedulability analysis for periodic and non-periodic tasks
Ability to properly choose resource access control methods for dealing with priority inversion and deadlocks
Ability to understand the specification of the temporal correctness of real-time systems
Ability to verify the temporal correctness of real-time systems
Understanding of dependability issues for real-time embedded systems
Ability to use various software fault tolerance methods for enhancing system dependability

Ability to analyze and evaluate software processes
Ability to establish software requirements and specifications
Ability to design software
Ability to perform verification and validation of software specifications
Ability to use software project management tools and techniques
Ability to use CASE tools for software development
Ability to understand formal methods in software development
Ability to understand functional and non-functional software specifications
Ability to establish and participate in an ethical software development team
Ability to use metrics to evaluate and forecast software developmental effort

Ability to convert fractional data between decimal and 2’s complement notation
Ability to perform addition, subtraction, multiplication by 2, and division by 2 in 2’s complement fixed point fractions’ notation
Ability to analyze and design gate-level combinational logic circuits
Ability to analyze, design, and utilize combinational components such as adders, multiplexers, and decoders
Ability to analyze and design simple synchronous sequential circuits
Ability to design shift registers
Ability to design gate-level RAM and ROM chips, utilize ROM in combinational design, and interconnect memory circuits to construct larger memories
Ability to design an Arithmetic-Logic-Unit and a data path, given specific register transfer requirements and using gates and components
Ability to design macros (sequences of micro-operations) for a given set of machine instructions on a simple computer, and for a given data path
Understand the use of a variety of addressing modes
Understand the use of priority interrupt mechanism

An understanding of basic elements of computer system hardware
An understanding of modern operating systems
An understanding of processes
An understanding of threads
An understanding of concurrency issues
An understanding of simple memory management
An understanding of virtual memory
An understanding of scheduling algorithms
An understanding of I/O management
An understanding of file management

Ability to understand the difference between the Object-Orientation and Functional Decomposition
Ability to understand the need for a notational language for Software Design capture and communication
Ability to understand the concept of Type and its realization as a Class (C++ and Java implementation)
Ability to understand the elements of the Class Association Diagram – Association and Relation
Ability to realize the aspects of Class Elicitation and Rejection (12 Principles)
Ability to design simple simulations and realize them in an OO Language
Ability to understand the dynamic aspects of OO Modeling as realized in the Sequence Diagram
Ability to implement Object Interaction and Communication in an OO Language
Ability to understand the concept of Object State are realized in the Harel Statechart Diagram
Ability to implement the conceptualizations of State management using an OO Language
Ability to understand the concept of the Thread and its correct modeling using CAD and Statecharts
Ability to understand the modeling of the MVC and its capture in CAD, Sequence Diagram and Statechart
Ability to implement MVC using an OO Language
Ability to implement various Visual Elements using MVC and the Interface conceptualization
Ability to design a simulation of an Agent based approach to solving complex problems
Ability to implement an Agent Based simulation design

Ability to understand the need for and structure of the OSI, TCP/IP network models
Ability to design and evaluate methods for the framing messages in transmission media
Ability to analyze and evaluate different error detection schemes
Ability to understand and evaluate stop-and-wait, sliding window protocols
Ability to understand and evaluate multiple-access protocols
Ability to design and evaluate routing protocols
Ability to design and evaluate flow control and congestion control protocols
Ability to understand the issues in inter-network design
Ability to understand the various Internet protocols (TCP/IP)
Ability to write networking protocols

Ability to apply the principles of user-centered design, universal design, and usability assessment to create simple websites or software applications
Ability to describe how human information processing and cognitive limitations affects peoples’ use of computer systems
Ability to describe the performance characteristics of humans according to the Model Human Processor (MHP) framework
Ability to describe the major computer input and output devices and modalities, and how they affect human performance
Ability to recognize and describe the main interaction models and metaphors currently in use to support human-computer interaction
Ability to recognize and describe next-generation models and metaphors supporting human-computer interaction
Ability to recognize and describe the software design process
Ability to describe which and how user-centered design activities should be performed during the software design life-cycle
Ability to describe the principles of universal access and how systems can be designed to support use by people with disabilities
Ability to recognize and describe the effects of work groups and high-risk environments on the interaction of humans and computers

Ability to apply the principles of user-centered design, universal design, and usability assessment to create complex websites or software applications
Ability to interpret the results of a keystroke-level model (KLM) analysis of a system
Ability to design and perform a user needs analysis
Ability to interpret the results of a user needs analysis and apply them to the design of a website or software application
Ability to represent the results of a user needs analysis in a deliverable document meant for cross-discipline consumption
Ability to create and document a navigation system (labeling, nomenclature, etc) for a website or application
Ability to create and document a site map and wireframes for a website or application
Ability to create and document the human-system interactions supported by a website or application
Ability to assess the usability of the information architecture architecture components of a website or application (navigation system, site map and wireframes, interaction flows) via evaluative methods
Ability to assess the usability of the information architecture architecture components of a website or application (navigation system, site map and wireframes, interaction flows) via test methods
Ability to represent the results of usability test or evaluation in a deliverable document meant for cross-discipline consumption
Ability to apply the results of usability assessments to improve the design of a website or application

Ability to plan, outline and present an informative presentation with visual aides, to a technical and/or nontechnical audience
Ability to plan, outline and present a problem/solution recommendation presentation with visual aides to a technical and/or nontechnical audience
Ability to function in a multidisciplinary team to research, plan, and present a multimedia presentation to a technical and/or nontechnical audience
Ability to analyze, edit, revise, and proofread technical documents created by the author, peers, and/or other technical writers individually and/or as a team
Ability to research, draft, and edit a major research paper
Ability to write concise memos, letters, emails for diverse purposes to different audiences and levels of management
Ability to team-author document specifications for a multi-component project
Ability to work as a team to create a functional code of ethics

Awareness of the social impact of technological and economic developments
Develop a working vocabulary of political evaluative terms and concepts
Develop a working vocabulary of economic evaluative terms and concepts
Develop a working vocabulary of ethical evaluative terms
An understanding of professional and ethical responsibility
Application to ethical problems
Knowledge of contemporary ethical issues for engineering and technology
Review of selected engineering and technology case studies
Ethical lessons learned in business, engineering and technology

Ability to understand and use propositional logic
Ability to understand and use predicate logic
Ability to understand and construct valid deductive proofs
Ability to understand and use naïve set theory
Ability to understand axiomatic set theory (Frege, ZF)
Ability to understand an introduction to model theory (predicate logic)
Ability to understand completeness, compactness, soundness theorems
Ability to understand and use graph theory
Ability to understand Chompsky’s Hierarchy of Languages
Ability to understand and use regular expressions, regular grammars, and regular languages
Ability to understand and use finite state automata
Ability to understand and use finite state machines
Ability to understand and use Statecharts
Ability to understand and use Petri nets (weighted, hierarchical)

Ability to understand the whys, whats and hows of a software system
Ability to differentiate process requirements from product requirements
Ability to specify and follow a requirements engineering process such as Structured Analysis or Object Oriented
Ability to identify stakeholders (and other sources of requirements), elicit their needs and objectives, identifying and resolving conflicts.
Ability to specify requirements
Ability to validate requirements
Ability to establish requirements traceability
Ability to model structural, behavioral and non-functional requirements
Ability to utilize case studies (of domain-specific) requirements engineering
Ability to build a prototype
Ability to use a CASE or modelling tools to capture the requirements
Ability to outline test plans
Ability to manage changing requirements
Ability to understand the derivation of architectural and design models from requirements specification
Ability to produce a clear, comprehensive and complete Software Requirements Specification

Ability to understand the Software Architectural perspective and how it differs from lower-level design
Ability to understand the need for a Software Architecture.
Ability to understand current era Software Architectures
Ability to develop and apply an Software Architectural Development Fishbone Diagram
Ability to understand and apply various Software Size and Complexity Estimation Techniques wrt Reqs
Ability to develop architectural approaches from basic requirements
Ability to analyze trade-offs among multiple architectural alternatives
Ability to incorporate complete (formal) requirements into a Software Architecture
Ability to use the SEI Quality-Attribute techniques in performing Architectural Tradeoff analyses
Ability to perform architectural reconstruction techniques using SEI scenarios
Ability to understand Patterns and their roles in the development of software architectures
Ability to understand the role of the MVC pattern, its limitations and abilities
Ability to understand architectural frameworks within product line development
Ability to communicate the necessity of architectural consistency to non-technical management.
Ability to consistently implement an architectural specification
Ability to construct architectures in a teamwork setting with minimal requirements

Understand the genesis of project management and its importance to improving the success of information technology projects
Demonstrate knowledge of the project management knowledge areas and process groups
Demonstrate knowledge of the project life cycle
Demonstrate knowledge of project selection methods
Demonstrate knowledge of work breakdown structures
Demonstrate knowledge of network diagrams, critical path analysis, and critical chain scheduling
Demonstrate knowledge of cost estimates
Demonstrate knowledge of earned value management
Demonstrate knowledge of motivation theory and team building
Apply project management concepts by working on a semester-long group project as team leader or active team member
Use Microsoft Project and other software to help plan and manage a small project

Ability to create an appropriate software architecture for a software project
Ability to select an appropriate target platform for a defined software project
Ability to define a Project Plan using MS-Project and track deviation from this plan
Ability to perform software sizing estimation using COCOMO or Function Points
Ability to define and create a requirements document using Story Boarding techniques
Ability to properly choose a Software Process plan and implement it within the context of available personnel
Ability to properly choose a Software Development Methodology and implement it
Ability to identify the subsystems within a system and annotate using package notation from the UML
Ability to create a detailed design and hold a Design Review with the customer (instructor)
Ability to use a Configuration Management System and develop team CM processes
Ability to work effectively and responsibly with others in a team development environment
Ability to use Integrated Development Environments in software development
Ability to use CASE tools in design development and capture
Ability to create Test Cases using Scenarios
Ability to follow programming documentation standards
Ability to document all design aspects of a Software Project
Ability to track effort of development and generate cost per LOC statistics
Ability to develop weekly progress reports and provide them to the customer
Ability to create and use a traceability matrix between requirements and artifacts and generate statistical analysis
Ability to present (i.e., demonstrate) a software product to the customer (instructor)