Bachelor of Science in Software Development
The University of Fairfax offers the Bachelor of Science in Software Development that enhances student capabilities in application development, database and systems administration, software, and web deployment, and more. The project-based curriculum will help students acquire proficiency in coding and modeling while practicing creative problem-solving. Furthermore, students will learn programming languages, how to build, design, test and verify the code, software program development and important software development and testing concepts.
Program Goals
- Pursue successful professional careers in Software Development or related fields while remaining technically current through graduate education and professional engagement.
- Excel as leaders, team members, communicators, and innovators in collaborative multicultural environments.
- Benefit society by practicing their profession responsibly and ethically and sharing their knowledge through training and mentorship opportunities.
Program Learning Outcomes
- Show mastery of software programming and techniques necessary to design, implement, and evaluate quality software solutions.
- Demonstrate software engineering standards in the design, documentation, test, and implementation of software systems.
- Reconcile conflicting project objectives in the design of software systems, finding acceptable compromises within limitations of cost, time, knowledge, existing systems and design choices, and organizations.
- Articulate organizational, operational, ethical, social, legal, and economic issues impacting the design of software and software systems.
- Analyze a problem in order to define the software requirements appropriate to a solution.
- Apply mathematical foundations and algorithmic principles in software design and development.
- Think critically at a conceptual level and by using mathematical analysis as well as the scientific method, write and speak effectively, use basic computer applications, and understand human behavior in the context of the greater society in a culturally diverse world.
Credit Requirements
The BSSD degree program consists of 120 semester credits.
Core Program Courses:
CS1000 Security +
(Prerequisite: IT1110) Security Plus provides students with the foundational knowledge needed within the field of Cybersecurity. This course highlights the vulnerabilities and threats organizations face today. Students will learn how to mitigate these vulnerabilities and various methods to prevent these occurrences.
CS1050 Introduction to Relational Database Management Systems
During this course students will learn concepts regarding various types of databases. Students will also explore concepts in designing basic and advanced databases. This course will also provide students with insight regarding database connectivity with web technologies.
CS2500 Systems Analysis & Design
Students taking this course are introduced to the analyses, methodology and tools used to translate business requirements into information systems that support the short- and long-term objectives of the enterprise. Students will learn about traditional structured analysis, object-oriented concepts and agile methods and the Systems Development Life Cycle (SDLC). They are also introduced to project management concepts and the software tools most commonly used by systems analysts.
CS3200 Cybersecurity Law & Ethics
Students taking this course will learn about laws concerning network and computer security, legal limits for accessing systems, data, and various other forms of regulations on digital information. Students in this course will also be introduced to Crimeware and how it relates to multiple areas of the application architecture.
CS3300 Project Management for IT Professionals
Students taking this course will develop skills in project integration, scope, time, cost, quality, human resources, communications, risk, procurement and stakeholder management as well as planning, executing, monitoring, controlling and closing processes. This course emphasizes the principles distinctive to managing information technology projects that extend well beyond standard project management requirements.
CS3500 Information Security Fundamentals
Students taking this course will learn the fundamental skills needed to evaluate and ultimately defend the networks and clients that they manage. This course introduces students to the core concepts of security, malicious attacks, threats, and vulnerabilities. Students in this course will have an understanding of cryptography, auditing, and security operations.
CS4250 Ethical Hacking
Ethical hacking covers vulnerability and penetration testing, which are essential elements in modern cybersecurity. Ethical hacking consists of testing the security of IT systems by trying to find and exploit security vulnerabilities. This class demonstrates the ethical use of various “white hat” cyber penetration testing tools and techniques consistent with Ethical Hacking training. Network tools and techniques take place in an enclosed “sandbox” environment. Students are exposed to various computer hacking skills and analyze various protective measures and their effectiveness.
CY3250 Biometrics: Application Technology & Management
This course presents the student with an introduction to biometrics as applied to computer security. The course emphasizes the biometric technologies employed in authentication, authorization, identification and access control to protect valuable computer and network resources and assets. The course examines how and why biometric systems are emerging as an increasingly important aspect of cyber security.
IT1010 Implementing & Troubleshooting OS Technology
This course is designed to prepare students for CompTIA A+ Essentials Certification examination (220-902). Topics include operating system fundamentals; operating system architecture; comparison of operating systems; the boot process; installing, configuring, supporting, and upgrading operating systems; diagnosing and troubleshooting operating systems, and file systems. Students will also be introduced to networking, hard drive support, and Internet concepts and configurations related to operating systems. At the conclusion of the course students will sit for the CompTIA A+ Essentials examination.
IT1030 Virtual Computing
In the Virtual Computing course, students will learn about computer hardware virtualization, container technologies, and virtualization software. Students will deploy Linux and Windows operating systems using virtualization software and will apply these technologies throughout future courses as they build more complex systems. This course will provide a clear understanding of virtual machines and containers and how each are managed and implemented.
IT2150 Client Configuration I
(Prerequisite: IT1010) Students taking this course will obtain the knowledge and skills necessary to implement, administer, and troubleshoot a desktop operating system in a network environment. This course aligns with the objectives in the Microsoft certification for client configuration.
IT3000 Linux Operations
Students taking this course will build the skills and knowledge necessary to effectively deploy, manage and administer servers and clients using the Linux operating system in the enterprise and to effectively integrate devices using Linux based operating systems into the enterprise network.
IT3150 Application Development
This course introduces students to multiple areas of application development while stressing Python style, best practices and good programming habits. The course covers application development for clients and servers, databases, interfacing with popular Microsoft Office applications, the World Wide Web, the cloud and social media.
IT4050 Computer Networking
This class will cover the theory, design, engineering, and installation of networks to connect digital computers. The course will prepare students to plan and implement a network. Also includes peer-to-peer networks, the client-server model, network operating systems, and an introduction to wide-area networks. The network and implementation tools may vary to meet current development trends.
IT4200 Software Assurance
This course provides a detailed explanation of software assurance practices, methods, and tools required throughout the software development life cycle. Students will apply life-cycle knowledge in exploring common programming errors and evaluate common software testing tools.
IT4250 Front End Processing
This course provides a detailed explanation of selecting and manipulating DOM nodes using JavaScript. Generating DOM elements dynamically and manipulating the DOM structure including Fetching information from external sources. The topics will cover the Basic JavaScript constructs, testing and finding bugs, data persistence on the client and object-oriented programming, classes, objects, and methods.
IT4300 Back End Processing
This course covers backend processing of web technologies that are used to build back-end systems that enable rich web applications. Utilizing technologies such as Python, Flask, Docker, RDBMS/NoSQL databases, and Spark, this class aims to cover the foundational concepts that drive the web today. This class focuses on building APIs using micro-services that power everything from content management systems to data engineering pipelines that provide insights by processing large amounts of data. The goal of this course is to provide an overview of the technical issues surrounding back-end systems today, and to provide a solid and comprehensive perspective of the web’s constantly evolving landscape.
NET4100 Implementing Collaboration Services
Students taking this course will obtain the knowledge and build the skills necessary to install, configure, and administer Microsoft SharePoint in the enterprise. The course also covers managing and monitoring sites and users. This course is designed to help students prepare for and pass Microsoft Certifications.
PR2000 Introduction to Programming Logic
This course reviews the basic concepts of programming. The course takes a unique and language independent approach with an emphasis on modern programming principles while introducing universal programming concepts and ensuring strong programming and logical thinking. This course will also explore gaming concepts as well as debugging techniques.
PR4050 Python
(Prerequisite: PR2000) This is an introductory course to the Python programming language. In this course, students will be introduced to various aspects of Python programming logic. This will include an introduction to the concepts of object-oriented, transaction, linear, and other such programming concepts and procedural program writing using variables, arrays, control statements, loops, recursion, data abstraction, and objects.
PR4150 C Programming Logic
(Prerequisite: PR2000) This course is designed to introduce students to the C programming language. This course is an introduction of basic programming concepts using the C Program. It also covers an introduction to Python programming. It also covers topics such as memory management, pointers, and arrays, which are covered in the context of C programming. This course covers general-purpose programming and is appropriate for all majors.
PR4250 Java Programming
(Prerequisite: PR2000) This course is an introductory course to Java Programming. This course introduces students to the methodology of programming from an object-oriented perspective. Students will develop programs using built-in, programmer-created, and dynamic data structures. Sorting and search algorithms will be examined to further develop understanding and skills in Java programming. Topics include inheritance, class hierarchy, polymorphism, and abstract and interface classes. The course emphasizes good software engineering principles and fostering basic programming skills in the context of a language that supports the object-oriented paradigm.
PR4350 NoSQL Programming
(Prerequisite: PR2000) This is an introduction to NoSQL Programming. This course provides students with basic database concepts including an overview of SQL and industrial database application domains. This course covers basic SQL commands and develops practical database programming skills. It begins with a review of the database environment, adding procedures, functions, indexes and optimization. The course also focusses on applying the skills to real world applications including integrating databases with applications, big data, and graphing and geo-spatial databases.
SD2350 Web Development
This course is an introduction to the design, creation, and maintenance of web pages and websites. Students will learn how to evaluate website requirements and learn how to create and maintain quality web pages. Students will also learn web design standards and learn to create and manipulate images. Various tools and techniques for web editing, graphics and marketing are presented during this course.
SD3050 Software Design
(Prerequisite: PR2000) This is an introductory course to Software Design. During this course, students will learn the basic knowledge for designing programs. Students will be introduced to the concepts of structured programming and object-orientated design patterns. This course will provide students with the principles and concepts involved in the analysis and design of small software systems.
SD3150 Software Engineering
(Prerequisite: CS2500) This is an introductory course in Software Engineering. In this course, students will learn basic principles and best practices for Software Engineering, including information security, user interface, architectural design, system models, verification, and validation. Students will be introduced to techniques used in high-level languages and system programming. The Fundamental Practice of Software Engineering Software Engineering introduces readers to the overwhelmingly important subject of software programming and development including process models, agile methods, software requirement and development testing and management.
SD3210 Operating Systems
This class introduces students to several operating systems. These operating systems include UNIX, Linux, Windows and Android. Some of the topics discussed include the history of operating systems and an overview of the most popular operating systems currently being used today. Another key topic being discussed includes memory management to include virtual memory management. This course is also a good introduction to networking.
SD3250 Software Architecture
(Prerequisite: CS2500) This course will explore large-scale software systems and the components needed to support them. This course aims to provide a sound understanding of architecture concepts, functions, tasks and techniques; and how the system constituent parts interact. Students will be exposed to the practical aspects of architecture. This course introduces students to architecture principles and tactics to support development of systems that exhibit system qualities required for successful software systems, such as performance, availability, security, and maintainability.
SD4450 SQL Programming
(Prerequisite: PR2000) This course introduces students to the concepts and skills required for database programming and their implementation using programmatic extensions to Structured Query language (SQL). Some of the topics include data manipulation, stored procedures, triggers, and query optimization. Concepts of this course will apply to any modern distributed database management system.
SD4990 Software Development Capstone Seminar
(Prerequisite: Can be taken in conjunction with other classes as long as it is in the last term) In this capstone project course, students complete an integrative Software Engineering/IT project that combines multiple aspects of their bachelor program. The project requires collaboration with a team of students to manage, analyze, design, implement, and evaluate a computer-based information system. The system development process is initiated with a case study included within the course structure. Students will develop a project charter that will guide them through the discovery of functional and nonfunctional requirements, the creation of a system design based on those requirements, and the development and testing of a functional computer application. Students will develop a management presentation to describe the project design and justify the continuation of the project. The capstone course will involve reading, writing, discussion, as well as the preparation by students of a substantive piece of work (e.g., a senior thesis, a research paper, or a creative work.).
General Education Courses
ENG1020 English Composition
Students taking this course will study and discuss rhetoric, style, and composition, with special emphasis on written communication skills. Students will learn how to effectively communicate. Students will learn how to demonstrate an effective writing style and composition. Students will demonstrate the ability to prepare forceful written communication using logical thinking.
ENG1260 Professional Communication
(Prerequisite: ENG0900, if applicable) Students taking this course will develop the ability to express themselves effectively in public and private settings. Students will learn about the various theories and strategies of effective communication.
LOG3570 Logic & Critical Thinking
This practical course provides students with an introduction to the art of thinking based on examining and discussing different types of reasoning and the requirements of logical consistency.
MAT1010 Understanding Mathematics
(Prerequisite: MAT0900, if applicable) Students taking this course will examine the fundamental principles of mathematical theory and grow to understand the logic and inter-relationship of various mathematical functions. Students will learn how to use fundamental vocabulary and symbols related to mathematics. Students will learn how to understand the relationships between various mathematical functions.
MAT2140 Algebra
(Prerequisites: MAT0900, if applicable; MAT1010) Students will learn algebraic problem solving, radicals, quadratic equations, polynomials, inequalities, and applied problem solving. Students will learn how to solve a system of equations by the substitution method, the addition method, and the graphing method.
CPL1010 Computer Literacy
Since technology is in constant flux, you must keep up with the changes to remain digitally literate which involves having a current knowledge and understanding of computers, mobile devices, the web, and related technologies. This course introduces students to computing hardware, software, devices, networks, systems, and the web via home computers, mobile devices, laptops, tablets, e-book readers, and the like.
ETH2050 Ethics
Students taking this course will study ethical thought and ideals, with emphasis on the central assumptions of personal and social morality. Students will also investigate ethics and related problems in industry, civil society, and the typical American community.
POL2020 Political Science
This course provides the student with the means and opportunity to engage their government as a concerned individual. Global political systems and principal theories will be examined and compared to events and decisions affecting each student at the local level. Throughout the course, students will be encouraged to become participants in their local government and to recognize and understand the various challenges that influence local decisions. The information and skills students learn in this course may be applied to many professional fields.
PSY1270 Psychology
This course provides students with an overview of the fundamental principles and methods of psychology. Topics for discussion include biological basis of behavior, sensory and perceptual processes, learning, motivation, developmental changes, personality, social behavior, and behavioral disorders.
ENV1010 Environmental Science
Environmental Science is a general course for non-biology majors in which students will explore the following basic principles: concepts required to understand interrelationships of the environment and the natural world; environmental problems both natural and man-made; risks associated with air, water, land pollution; health of humans and ecosystems; deforestation and climate change; overpopulation and environmental law, economics, and ethics.

Visit our eLearning page for more details on AWS Academy, TestOut, and our innovative course delivery methods.