CS Undergraduate Programs

  • Prospective Students

    The computer science department in the University of Virginia offers quality programs that emphasizes basic science, technical mastery, research opportunities and a firm grasp of scientific principles as well as strong communication skills and creative problem solving. The department offers a Bachelor of Science in Computer Science, a Bachelor of Arts in Computer Science (in collaboration with U.Va.’s College of Arts & Sciences), and a Bachelor of Science in Computer Engineering (in collaboration with the U.Va. Charles L. Brown Department of Electrical and Computer Engineering). The department also offers a Computer Science Minor for Undergraduates.

    Undergraduate students are not admitted to particular majors at the University of Virginia. Instead, they are admitted to a school at the University, and later declare a major.

    The Department of Computer Science resides within the School of Engineering and Applied Science (SEAS), but offers majors both to students admitted to SEAS and to students admitted to the College of Arts and Sciences. Students who perform adequately in early CS courses are admitted to a CS major upon major application regardless of their school.

    We would love for you to visit UVA! Start by viewing the Engineering School's "Visit Us" page for details.  

  • Admissions

    Learn about the requirements, application process, transfer information, cost, and more at the Engineering School's undergraduate admissions page

    Questions regarding admissions should be directed to undergraduateadmission@virginia.edu

    For questions or more information specific to computer science, contact cs-admissions@virginia.edu

    The information contained on this website is for informational purposes only.  The Undergraduate Record represents the official repository for academic program requirements. This publication may be found here: www.virginia.edu/registrar/catalog/ugrad.html

  • Bachelor of Science Degree - BSCS

    The computer science BS degree prepares students for careers that provide both personal and societal rewards. As creators of information technologies our graduates are reaching out to people and the world by supporting and enhancing communication, health care, entertainment, scientific inquiry, transportation, business, and almost any other endeavor you can imagine. Computing connects closely with a wide range of disciplines including, but not limited to, the visual arts, music, life sciences, the physical sciences, linguistics, engineering, mathematics, and the social sciences.  The computer curriculum focuses on developing methods and tools for describing, implementing, and analyzing information processes and for managing complexity; including abstraction, specification, and recursion. 

    The Bachelor of Science in Computer Science degree offered by the Department of Computer Science is accredited by the Computing Accreditation Commission of ABET. 

    Requirements for the BSCS Major 

    Required Core CS AND APMA Courses

    CS 1110, 1111, 1112 or 1113: Introduction to Computer Science (requirement waived with AP or IB credit, or by passing CS placement test. NOTE: Placement test does not award credit, so an additional CS elective is needed to replace the credit.)
    CS 2110: Software Development Methods
    CS 2102: Discrete Mathematics I
    CS 2150: Program & Data Representation
    CS/ECE 2330: Digital Logic
    CS 2190: CS Seminar I (in the process of being removed)
    CS 3102: Theory of Computation
    CS 3330: Computer Architecture
    CS 3240: Advanced Software Development Techniques
    CS 4102: Analysis of Algorithms
    CS 4414: Operating Systems
    Capstone Experience: CS 4970 Practicum I & CS 4971 Practicum II (both must be taken in the same academic year) OR CS 4980 Capstone Research
    APMA 3100: Probability
    APMA 2130 or 3080 or 3120 or 3150 (select 2, but cannot take both 3120 & 3150)

    Required SEAS Courses

    APMA 1090, 1110 &  2120
    CHEM 1610 & 1611
    ENGR 1624
    PHYS 1425, 1429, 2415, & 2419

     

    Computer Science Electives (5 required) 

    Any CS 3000 level or CS 4000 level courses not otherwise required. See the Undergraduate Handbook for a complete list and for restrictions.  Among the choices: 

    CS 3205 HCl in Software Development
    CS 4240 Principles of Software Design
    CS 4330 Advanced Computer Architecture
    CS 4444 Parallel Computing
    CS 4457 Computer Networks
    CS 4458 Internet Engineering
    CS 4610 Programming Languages
    CS 4620 Compilers
    CS 4630 Defense Against the Dark Arts
    CS 4710 Artificial Intelligence
    CS 4720 Web and Mobile Systems
    CS 4730 Game Design
    CS 4750 Database Systems
    CS 4753 Electronic Commerce Technology
    CS 4810 Introduction to Computer Graphics

     

    Science / Math Elective (1 required) 

    One course, chosen from an approved list, including but not limted to: Biology, Chemistry, Electrical Engineering, Materials Science, and Physics courses. 

    For a list of acceptable courses, please visit the Undergraduate Advising office in Thornton A122.  
     

    Science, Technology & Society (STS) (4 required) 

    STS 1500, 4500, & 4600 are required. You can also take one STS 2XXX/3XXX course, or a College of Arts & Sciences course that satisfies the Second Writing Requirement.

     

    Humanities & Social Sciences (HSS) Electives (5 required) 

    For a list of acceptable courses, please visit the Undergraduate Advising office in Thornton A122 or view the list in the Undergraduate Handbook.  

     

    Unrestricted Electives (5 required)

    For a list of acceptable courses, please visit the Undergraduate Advising office in Thornton A122 or view the list in the Undergraduate Handbook.  

     

    Undergraduate Handbook

    UVA Class Schedule

  • Bachelor of Arts Degree - BACS

    The goal of the BA degree in Computer Science (BACS) is to educate students so they can develop a deep understanding of computing and critical thinking skills that will allow them to pursue a wide variety of possible careers, including an opportunity to become academic, cultural, and industrial leaders in areas that integrate the arts and sciences with computing.

    Computer Science is the study of information processes. Computer scientists learn how to describe information processes, how to reason about and predict properties of information processes, and how to implement information processes elegantly and efficiently in hardware and software. The Computer Science curriculum concentrates on developing the deep understanding of computing and critical thinking skills that will enable graduates to pursue a wide variety of possible fields and to become academic, cultural, and industrial leaders. The core curriculum focuses on developing methods and tools for describing, implementing, and analyzing information processes and for managing complexity including abstraction, specification, and recursion. Computing connects closely with a wide range of disciplines including, but not limited to, the visual arts, music, life sciences including biology and cognitive science, the physical sciences, linguistics, mathematics, and the social sciences. The Computer Science major provides students with a strong foundation in computer science, combined with courses in arts, humanities, and sciences, in order to develop broad understanding of other areas and their connections to computing.

     

    BACS Curriculum

    The following version of the major’s requirements apply to students whose official “requirements term” is Fall 2019 or later. Those whose requirements term is Summer 2019 or earlier must meet slightly different requirements which can be found in an archived version of the Undergraduate Record.To complete the BA in Computer Science, students must satisfy the pre-requisites, then complete 27 credits of CS coursework as well as 12 credits of related non-CS coursework as described below. See past UG Records here

    A student must also meet the COLLEGE COMPETENCY AND AREA REQUIREMENTS.  Also, note that that one required course, CS4102, has a math prerequisite of APMA 1090 or MATH 1210 or MATH 1310 (or equivalent coursework in high school).

    Prerequisites

    To be accepted into the major, students must satisfy the following pre-requisites. Coursework used to satisfy these must have a grade of C+ or higher.

    • An introductory computer science course, such as CS 1110, CS 1111, CS 1112, CS 1113 or CS 1120.
    • CS 2110, Software Development Methods, or an equivalent.

     

    Required CS Courses (15 credits)

    • CS2102: Discrete Mathematics 
      Introduces discrete mathematics and proof techniques involving first order predicate logic and induction. Application areas include sets (finite and infinite), elementary combinatorial problems, and finite state automata. Development of tools and mechanisms for reasoning about discrete problems. 
      Prerequisite: CS1110, CS1111, CS1112, or CS1113
       
    • CS 2150: Program and Data Representation
      Introduces programs and data representation at the machine level. Data structuring techniques and the representation of data structures during program execution. Operations and control structures and their representation during program execution. Representations of numbers, arithmetic operations, arrays, records, recursion, hashing, stacks, queues, trees, graphs, and related concepts.
      Prerequisite: CS 2110 and CS 2102 with grades of C- or higher.
       
    • CS 3330: Computer Architecture
      Includes the organization and architecture of computer systems hardware; instruction set architectures; addressing modes; register transfer notation; processor design and computer arithmetic; memory systems; hardware implementations of virtual memory, and input/output control and devices. 
      Prerequisite: CS2150 with a C- or higher
       
    • CS 4102: Algorithms 
      Introduces the analysis of algorithms and the effects of data structures on them. Algorithms selected from areas such as sorting, searching, shortest paths, greedy algorithms, backtracking, divide- and-conquer, and dynamic programming. Data structures include heaps and search, splay, and spanning trees. Analysis techniques include asymptotic worst case, expected time, amortized analysis, and reductions between problems.
      Prerequisite: CS 2102 and 2150 with grades of C- or higher, and APMA 1090 or MATH 1210 or MATH 1310
       
    • One of the following four courses: CS 3102 (Theory of Computation), CS 3240 (Advanced Software Development), CS 4414 (Operating Systems), or CS 4610 (Programming Languages). See course descriptions in the Undergraduate Record for pre-requisites

     

    CS Elective Courses (12 Credits)

    These are CS courses at the 3000-level or above, in addition to the required courses listed above. At most 3 credits of CS 4993 (Directed Independent Study) can be counted towards this requirement. CS 4980 and CS 4998 cannot be counted towards this requirement.

     

    Integration Electives (12 Credits)

    These are non-CS courses that contribute to this program of study by exploring applications of computing to arts and sciences fields in a significant way or by providing fundamental computing depth and background. Integration electives are courses offered by departments in the College of Liberal Arts and Sciences. The list of approved courses is available here.

     

    Distinguished Majors Program

    Bachelor of Arts Computer Science majors who have completed 18 credit hours towards their major may apply to the Distinguished Majors Program. The DMP focuses on a creative student research project as advised and approved by an advisor. For more information regarding the Distinguished Major Program, please visit https://csdmp.github.io/.

  • Differences: BS vs. BA Degree

    The Computer Science department offers two Computer Science degrees: the Interdisciplinary Major in Computer Science degree offered through the College of Arts & Sciences (BACS), and the Bachelor of Science in Computer Science degree offered through the School of Engineering and Applied Sciences. In addition to the two Computer Science degrees, we also offer a Bachelor of Science in Computer Engineering (aka CpE) degree which is jointly administered with the Electrical and Computer Engineering Department .

    The main differences between the two Computer Science degrees are:

    1. The BACS degree is in the College of Arts & Sciences; the BSCS is in the School of Engineering and Applied Science. This means the degrees have different general requirements. The general requirements for the College of Arts & Sciences are the competency requirements (see the Undergraduate Record for details). For example, the traditional option for these includes two writing requirements, a foreign language, and area requirements in natural science and mathematics, social sciences, humanities, and historical studies. The general requirements for the School of Engineering and Applied Sciences include mathematics, chemistry, physics, technical electives, humanities electives, and science, technology, and society courses. To enroll in the BACS major, students must be enrolled in the College of Arts & Sciences. To enroll in the BSCS major, students must be enrolled in the School of Engineering and Applied Science.
       
    2. Students in the BACS degree first take the CS1110-CS2110. After completing the first two courses, students are prepared for the same courses, and both BACS and BSCS are required to take these courses: CS2102, CS2150, CS3330, and CS4102.
       
    3. BSCS students (starting after Summer 2019) are required to take CS2330 (Digital Logic Design), CS3102 (Theory of Computation), CS3240 (Advanced Software Development Techniques), and CS4414 (Operating Systems).
      The BACS degree requires students to take one of these four courses: CS 3102 (Theory of Computation), CS 3240 (Advanced Software Development), CS 4414 (Operating Systems), or CS 4610 (Programming Languages).

    4. Both degrees require additional courses be taken as CS electives, which are CS courses at the 3000-level or above that are in addition to a degree's required courses described above. The BACS degree requires 4 CS elective courses (12 credits), while the BSCS requires 5 courses (15 credits).

    5. The BACS degree requires four integration electives, which are not part of the BSCS degree. The integration electives are courses in other departments that have strong connections with computing. Look under the BACS tab for a list of pre-approved integration electives.

    6. The BSCS degree (like all Engineering School degrees) requires a fourth-year thesis. This involves taking STS 4010 (in which students write a thesis proposal) and STS 4020 (in which students complete a thesis report), and working with a technical advisor on a thesis project. BACS students are not required to complete a thesis, but may enter the distinguished majors program. To complete a distinguished major, a BACS student must complete a fourth year thesis project that is approved by two readers.
  • BACS - Distinguished Majors Program

    Bachelor of Arts Computer Science majors who have completed 18 credit hours towards their major may apply to the Distinguished Majors Program. The DMP focuses on a creative student research project as advised and approved by an advisor. For more information regarding the Distinguished Major Program, please visit https://csdmp.github.io/.

  • CS Minor

    The Computer Science minor requires credit for six CS courses as described below. Any undergraduate student in the university who will complete the requirements for the CS minor before graduation can submit the minor application form during the first week of their final semester in order to graduate with the CS Minor listed on their transcript.  (See Declaring a Major or Minor in the section below.)

    The course requirements for the CS minor are:

    •   CS 1110, CS 1111, CS 1112, or CS 1113: Introduction to Computer Science

    •   CS 2110: Software Development Methods

    •   CS 2102: Discrete Mathematics

    •   CS 2150: Program and Data Representation

    •   Six credits of CS electives at the 3000-level or above

    Notes:

    (1) If  you  place  out  of  CS  1110  via  the  placement exam,  you  still  have  to  take  6  CS  courses;  if  you  receive course credit for it via the AP exam or transfer credit, then you need not substitute a course in its place.

    (2) At most 3 credits of CS4993, Independent Study, can count as a CS elective for the minor.

    (3) Computer science courses typically build upon each other.  In particular, CS 1110 is a prerequisite of both CS 2110 and CS 2102.  CS 2110 and CS 2102 are both prerequisites of CS 2150.   In  addition,  CS  2150  is  a  prerequisite  for  almost  all of the computer science electives.  The Department of Computer Science also requires that its courses be passed at a certain level (typically a C- or higher) in order to take successive courses.

    In recent semesters CS courses have been in heavy demand, and non-majors (including those working on the CS minor) often face challenges enrolling in courses they want to take. Students should consider this when planning which semesters to take CS courses. The CS department continues to work with the university to obtain resources that will allow more non-majors to take CS courses more easily.

    While any undergraduate can get the CS Minor by completing the six courses, a limited number of SEAS students are allowed to declare the minor before their final semester. These students get some priority in signing up for courses (more than non-majors, but less than majors). SEAS students interested in this option should see Declaring a Major or Minor.

    Any student who is able to complete all of the requirements for the CS minor before graduation will be awarded the CS minor if they submit the minor request form at the beginning of their graduation semester. Only a small number of students are allowed to declare the minor before this, i.e. earlier than their final semester at the university. Currently the department can only allow a limited number of SEAS students to declare the CS minor before their final semester, due to a very high demand for upper-level computing courses. But students in the College or other schools who complete the required courses, in or before their final semester, can declare the CS minor at the start of their final semester.

  • Declaring a Major or Minor

    BS Major | CS Minor | BA Major

     

    Declaring the BS Major

    First-year students: All first-year Engineering students choose their major in the Spring semester of their first year. At that time, students seeking either the BSCpE or BSCS major will submit their application information as part of the normal first-year SEAS major declaration process, which the SEAS Dean's office manages. All applicants will be notified of admission decisions by early summer.

    Engineering Students Changing Majors or Seeking a Second Major: It is strongly suggested for students to be enrolled in (or to have already completed) CS 2150, prior to applying to the BSCS major; applications from students who are currently enrolled in CS 2150 may not be processed until after the CS 2150 grade is posted in SIS. In order to apply for the BSCS major, you must turn in the appropriate form below, along with a copy of your unofficial transcript from SIS, by the application deadlines: October 15 and February 15 each year.​

    The completed form and transcript can be turned in to the main CS desk (Rice Hall 527). The Program director will generally review these requests after each deadline.

    At this time, SEAS students are not eligible to apply for the BACS (i.e., the College degree) as a second major.

    Intra-University Transfer Students: SEAS accepts transfer applications for non-SEAS UVa students, currently once a year. Qualified applicants who want to transfer into SEAS to become BSCpE or BSCS majors will be considered on a space-available basis given our target caps for each class year. Such students should follow the SEAS application process, and must contact the Computer Science (CS) department contact person listed in the SEAS webpage before applying. Contact Lisa Lampe and Jim Cohoon for more information. 

    Transfer Students from Outside the University: Students transferring into the University from other institutions must apply to the department to be allowed to declare the BSCS or BSCpE major. Qualified applicants will be considered on a space-available basis, given our target caps for each class year. Applications will be considered the summer before a transfer student begins classes, and the application process will be discussed during the summer orientation session. If an incoming transfer does not attend summer orientation, they must meet with a department advisor before classes begin to discuss applying. 

    Transfer students without the CS 1110 equivalent before their first semester in residence cannot be accepted into the major. Due to prerequisite dependencies, it is difficult for rising 3rd-year students who have not completed CS 2110 and CS 2102 to complete the BSCS in the 4 remaining semesters. It is important that students transferring to the University as third-years complete the equivalent of these courses before coming to UVa. In exceptional cases, students in this situation may apply for the major, but the ability to complete the degree in a timely fashion is one factor that will determine if you are accepted into the degree program.

     

    Declaring a Minor in CS

    Due to the demand for computing courses, the department can only accept a limited number of students to declare a minor in Computer Science. The CS department continues to work with the university to obtain resources that will allow more students to declare the Computer Science minor.

    Students wishing to declare the minor will be considered after completing CS 2150. The normal deadline is March 1. Applicants who have already completed CS 2150 will be notified if they have been accepted as a CS minor by April 1. Applicants who are currently enrolled in CS 2150 will be notified if they have been accepted as a CS minor by June 1.

    Any student who has not declared but is able to complete all of the requirements for a minor in Computer Science before graduation will be awarded the minor if they submit the minor request form at the beginning of their graduation semester.

    More information regarding the CS Minor can be found in the section above, or contacting contact cs-student-support@virginia.edu

    Students apply to the Computer Science minor by completing the Additional Major - Minor (Minor Declaration) Form and attaching and unofficial transcript from SIS.  The completed form and transcript can be turned in to the main CS Office (Rice Hall 527) by the deadline or sent by email to the address above. 

    BS in Computer Engineering majors: When the CpE program was created, it was decided by the two departments that CpE students could not declare the minor in CS. Because the CpE combines CS and EE, graduates with this degree will automatically have the equivalent of the minor in CS. 

     

     

    Declaring a BA Major

    In recent years, there has been a rapid growth in demand for computing classes at UVA and other universities. In the last few years, the department has been able to accept all qualified students who wanted to declare the BACS major. However, we do have an application process in case demand were to increase beyond our capacity to serve our majors.

    If resources are inadequate to satisfy student interest in a given year, a selective admissions process will be used to evaluate applications to declare the BACS. The primary (but not only) criterion for admission is evidence that a student will be able to complete our computing curriculum in a timely manner. (This includes grades in completed CS coursework.) Secondary criteria reflect the mission, values and goals of both the University as a whole and the Department in particular, including our goal to develop graduates who will become effective contributors, collaborators, innovators, or leaders in the profession and society.

    Applying for the BACS Major: Applications to apply to the BACS major will be available after the start of the spring semester each year, via an online application form and Collab site. The Spring 2021 application period for the BACS will be open on January 4, 2021. The deadline to apply is 9am, Monday, February 22, 2021. To apply, you must join a Collab site where you will find an application form and where you will submit your transcript. Details on how to join this site and apply can be found at http://bit.ly/apply-bacs-s21. That page also gives dates for information sessions about the major and the applications process.

    Completion of the online application form and submission of your transcript in Collab must be done by the 9:00 AM on the deadline day (typically in mid-February). No exceptions. The Deadline will be posted in the Computer Science Department office and on this web page by mid-January each year. We generally make decisions by the end of March, and will email all applicants to give an update on the status of decisions in mid-March.

    Requirements to Declare the Major: In order to apply for the major, students must have taken one introductory computer science course (either CS 1110, CS 1111, CS 1112, CS1113, CS111X) with a grade of C+ or better, and must be enrolled in CS 2110 (or must have already completed CS 2110 with a grade of C+ or better). Students are accepted into the major in the spring semester of their second year upon review of their applications.

    Application Information: Applications must be completed in the spring semester (normally the student's fourth semester). Due to prerequisite dependencies, it is difficult for rising third-year students who have not completed CS 2110 to complete the major in the 4 remaining semesters.

    All applicants will be notified of admission decisions by the first week of April.

    Second Majors:College of Arts and Sciences students who wish to declare the BACS as a second major must follow the application process described here. Only College of Arts and Sciences students are eligible to apply for the BACS degree as a second major.

    Transfer Students from Outside the University: Students transferring into the University from other institutions must apply to the department to be allowed to declare the BACS major. Applications will be considered the summer before a transfer student begins classes, and the application process will be discussed during the summer orientation session. If an incoming transfer does not attend summer orientation, they must meet with a CS advisor before classes begin to discuss applying.

    Transfer students who have not completed the degree's prerequisites (CS 1110 or equivalent and CS 2110, with grades of C+ or higher) before their first semester in residence cannot be accepted into the major. Due to prerequisite dependencies, it is difficult for rising 3rd-year students who have not completed CS 2110 to complete the BACS in the 4 remaining semesters. It is important that students transferring to the University as third-years complete the equivalent of these courses before coming to UVA. In exceptional cases, students in this situation may apply for the major, but the ability to complete the degree in a timely fashion is one factor that will determine if you are accepted into the degree program.

    Questions? Send email to cs-admissions@virginia.edu with a subject line "BACS application question".

  • Bachelor of Science in Computer Engineering

    The Computer Engineering Program (a program that CS offers in collaboration with the Charles L. Brown Department of Electrical and Computer Engineering) gives students an opportunity to work with some of the top researchers in the country and to participate in new research initiatives.

    About the Computer Engineering Program
  • Cyber Security Focal Path

    A focal path is a selection of courses that a student can take to fulfill the various elective requirements, which are described in detail in the sections on elective information for the various majors. They do not change any of the requirements, and students are not required to follow a focal path. They are included simply to give prospective majors an idea about various classes that they can take to fulfill an interest that they may have in computing. The Department of Computer Science has a Cybersecurity Focal Path that includes ten courses. Once the courses are completed, the student can apply for a Letter of Completion.

    Cybersecurity Focal Path required courses
  • Current Students - Helpful Info

    Important Information for UVA Engineering Undergrads - This page includes useful links and information for current UVA Engineering undergraduate students. If there is information needed that is not on this page, contact the office of undergraduate programs

    Academic Forms

    Undergraduate Handbook - This is a link to the CS Undergraduate handbook (PDF); this is hosted in a github repo.

    UVA Class Schedule - Lou's List (unofficial).

    Job Board - opportunities for internships, jobs, etc. can be found on this page.

    Other Links and Details - This page contains additional links that are relevant for undergraduate majors in Computer Science and Computer Engineering. 

     

  • CS Course Enrollment Dates - Fall 2020

    Visit the page listed below to see a list of enrollment open dates by course number. 

     

    Enrollment Dates for Fall 2020
  • Accreditation

    The Bachelor of Science in Computer Science degree offered by the Department of Computer Science is accredited by the Computing Accreditation Commission of ABET, http://www.abet.org.

    The Bachelor of Science in Computer Engineering degree offered jointly by our department and the Department of Electrical and Computer Engineering is accredited by the Engineering Accreditation Commission of ABET.
     

    Graduation Data

    Graduation data for these degree programs is included on this page that provides such information for all SEAS undergraduate degrees.

    Each degree program has defined Program Educational Objectives (PEOs), which are broad statements that describe the career and professional accomplishments that the program is preparing graduates to achieve. In addition, each program has defined Student Outcomes (SOs), which are are narrower statements that describe what students are expected to know and be able to do by the time of graduation. These relate to the skills, knowledge, and behaviors that students acquire in their matriculation through the program.

    These objectives and outcomes for the BS in Computer Engineering are found on this page.

    Those for the BS in Computer Science are documented below.
     

    Program Educational Objectives for the BSCS

    Graduates of the Bachelor of Science program in Computer Science at the University of Virginia:

    1. have the knowledge and skills that allow them to make tangible contributions in their profession.
    2. have the knowledge and skills that allow them meet new technical challenges.
    3. are able to contribute effectively to society.
    4. are able to work effectively as team members.
    5. have the ability to be innovators in the design, analysis and application of computer systems.

    Student Outcomes for the BSCS

    The BS in Computer Science program at the University of Virginia enables students to achieve, by the time of graduation:
    ·      (SO-a) An ability to apply knowledge of computing appropriate to the discipline.
    ·      (SO-b) An ability to design, implement, and evaluate a computing-based solution to meet specifications.
    ·      (SO-c) An ability to apply computer science and software engineering principles to develop quality computer-based systems of varying complexity.
    ·      (SO-d) An ability to function effectively on teams to develop a computer-based system.
    ·      (SO-e) An ability to communicate effectively.
    ·      (SO-f) An ability to analyze the local and global impact of computing and engineering on individuals, organizations, and society.
    ·      (SO-g) An understanding of professional, ethical, and legal issues and responsibilities.