joomla templates   

Bachelor of Science in Computer Science

The curriculum for the Bachelor of Science in Computer Science degree is designed to give students a state-of-the-art education in both the theory and practice of computer science. Upper-level courses involve students in team projects that emphasize industrial applications and best practices. The program provides a blend of theory and applications, preparing students for a variety of computer science careers in industry, government, and academia while developing the foundation for continuing education and growth in the field of computer science.

Degree Requirements

The Bachelor of Science in Computer Science requires 40 courses: twelve (12) common academic curriculum courses (CAC), eighteen (18) professional core courses, and ten (10) elective courses.

Area # of Courses Credit Hours
General Education 12 36
Professional Core 18 54
Elective 10 30
Total 40 120

Sample Schedule

The following sample schedule is just an example of the possible sequencing of courses for the BCS program.

FIRST SEMESTER
Course Code Course Name Credits
ENGL 113 English Composition and Rhetoric 3
COMM 110 Oral Communications Skills 3
CMP 110 Introduction to Computing 3
CMP 120 Programming Logic 3
CMP 130 Ethical, Societal, and Legal Aspects of Computing 3
  Total credited hours 15

SECOND SEMESTER
Course Code Course Name Credits
LING 105 Language and The Human Experience 3
MATH 160 Pre-Calculus 3
CMP 210 Programming I 3
CMP 270 Essentials of Networking 3
CMP 350 Database Concepts 3
  Total Credited Hours 15

THIRD SEMESTER
Course Code Course Name Credits
HUMN 101 Introduction to the Arts and Humanities 3
CHIN 100 Elementary Chinese I 3
CMP 343 Computer Security Principles 3
CMP 360 Web Development Methods 3
CMP 375 Human-Computer Interaction 3
  Total credited hours 15

FOURTH SEMESTER
Course Code Course Name Credits
SPAN 100 Elementary Spanish I 3
ENGL 120 Academic Writing 3
CMP 230 Discrete Mathematical Methods for Computing 3
CMP 250 Computer Architecture 3
CMP 260 Operating Systems 3
  Total credited hours 15

FIFTH SEMESTER
Course Code Course Name Credits
HIST 101 World History 3
CMP 220 Programming II 3
CMP Computer Science Elective 3
CMP Computer Science Elective 3
CMP Computer Science Elective 3
  Total credited hours 15

SIXTH SEMESTER
Course Code Course Name Credits
BIOL 101 General Biology 3
CMP 330 Data Structures and Algorithm Analysis 3
CMP Computer Science Elective 3
CMP Computer Science Elective 3
CMP Computer Science Elective 3
  Total credited hours 15

SEVENTH SEMESTER
Course Code Course Name Credits
GEOG 101 World Geography 3
CMP 340 Principles of Programming Languages 3
CMP 498 Capstone Project I 3
CMP Computer Science Elective 3
CMP Computer Science Elective 3
  Total credited hours 15

EIGHT SEMESTER
Course Code Course Name Credits
PHYS 101 College Physics 3
CMP 440 Software Engineering 3
CMP 499 Capstone Project II 3
CMP Computer Science Elective 3
CMP Computer Science Elective 3
  Total credited hours 15

Program Objectives

VIU’s BCS program educates and trains students to create and implement solutions for information systems-based needs and problems in research, commercial, financial, governmental, or other types of organizations. The approach of this degree program is to integrate theoretical and practical aspects of computing science and technology. VIU’s BCS program emphasizes the design and use of computer technology to develop information processing systems. The program provides students with a broad range of computer knowledge and practical skills required in most of business and industry areas today. Successful graduates are awarded a Bachelor of Science in Computer Science degree. No concentration or specialization is associated with this degree, but students have a large selection of electives to choose from in the final year based on their specific areas of interest. Specifically, BCS program graduates will be able to:

  • Use a variety of sources and means to maintain currency with the principal categories of computing tools and frameworks;
  • Design appropriate software system and service structures in response to application needs and the organizational environment based on the available pool of components, tools, and services;
  • Make appropriate design choices as a result of analysis regarding system and service properties;
  • Select appropriately among competing technologies and technical approaches on the basis of sound evaluation;
  • Analyze social and other external impacts along with relevant legal, regulatory, ethical, and professional issues in business and technical decision-making; and
  • Selectively develop depth of expertise, exercising a conscious process of critical reflection and learning.

Common Academic Curriculum Courses

The general education requirements are designed to give each student a breadth of experience in several academic disciplines. General education courses are designed to help a student develop a useful perspective on cultural, political, scientific and economic issues. Undergraduate students are required to meet the general education requirements listed below. Students should choose 12 courses from the Common Academic Curriculum (CAC) in consultation with their academic advisors. Please visit the CAC site for course listings. 

Division Number of Courses Credit Hours
A. Arts and Humanities 2 6
B. Communications 3 9
C. Languages 2 6
D. Mathematical Sciences 1 3
E. Natural Sciences 2 6
F. Social Sciences and Cross Cultural Studies 2 6

Professional Core Courses (18 Courses – 54 Credit Hours)

The eighteen (18) professional core courses belong to three categories: fundamental courses (7 courses), programming courses (4 courses) and application courses (7 courses).


Professional Core Courses: Fundamental Courses
Course Code Course Code Credits
(7 Courses – 21 Credit Hours)
CMP 110
Prerequisite: None
This course introduces computer systems, their capabilities, limitations, and applications. Students survey computer concepts with an emphasis on the personal computer and its practical use, including hardware, application and system software, the Internet and World Wide Web, communications, database management, e-commerce, and computers in society.
3
CMP 120
Prerequisite: None
This course introduces algorithmic thinking and problem solving without focusing on any particular language. Students will learn the basic constructs of programming, including variables, constants, expressions, control structures, functions pointers and arrays, and are introduced to functional, decision-based and iterative processing of data.
3
CMP 130
Prerequisite: None
This course first provides a review of computer systems, applications and the Internet; and thereafter discusses the impacts of technology on society and the responsibilities of technical professionals as the principal agents in developing and applying new technology. Various important and controversial issues will be discussed, such as computers and privacy, effects of communications technology on the democratic process, environmental problems, intellectual property, and technology and war. Several different ethics codes will be used as the basis for discussion of professional obligations.
3
CMP 230
Prerequisite: None
This course is intended to be a college-level introductory Discrete Mathematics course for either undergraduate or graduate students. The course focuses on the following seven key topics: Combinatorial Problems and Techniques, Sets, Relations and Functions, Coding Theory, Graphs, Matching, Counting Techniques, Recurrence Relations and Generating Functions.
3
CMP 250
Prerequisite: CMP 110 Introduction to ComputingThis course is an introduction to the architecture of computer systems. Topics include: computer hardware organization; floating-point arithmetic; central processing units; instructions set design issues; micro-programmed control; addressing and memory hierarchies; bus control and timing; hardwired control; parallelism, pipelining; input/output mechanisms, peripheral devices; interrupt systems; software versus hardware trade-offs.
3
CMP 260
Prerequisite: CMP 110 Introduction to Computing
The course is an introduction to the fundamentals of operating systems. Topics included: concurrent processes and synchronization mechanisms; processor scheduling; memory management, virtual memory; paging, file management; I/O management; deadlock management; interrupt structures, interrupt processing; device management; performance of operating systems; synchronization in a multi-programmed OS and with virtual memory management. Formal principles are illustrated with examples and case studies of one or more contemporary operating systems.
3
CMP 270
Prerequisite: CMP 110
This course includes the fundamentals of network standards, concepts, topologies and terminologies including LANs, WANs, Internet Protocol (IP) addressing, subnet masking and network design, and various protocols. This course teaches concepts from the Open Systems Interconnection (OSI) Networking Reference Model, developed by the International Standards Organization (ISO) to describe the function and structure of network communications protocols.
3

Professional Core Courses: Core Programming Courses
Course Code Course Code Credits
(4 Courses – 12 Credit Hours)
CMP 210
Prerequisite: CMP 120 Programming Logic
This course examines the fundamental data structures and analyzes algorithms such as files, sets, strings, and linked lists. It introduces searching and sorting algorithms and algorithm analysis. This course also covers abstract data types and essential data structures such as arrays, stacks, queues, and trees. The major emphasis of this course is on program development through various programming projects.
3
CMP 220
Prerequisite: CMP 120
This course concentrates on the concepts of object oriented programming (OOP) paradigm. Concepts presented are exemplified using a selected object oriented programming language. Topics include: fundamental abstraction, modularity and encapsulation mechanisms in OOP, classes, inheritance, polymorphism, exception handling, concurrent programming, data structures. Students complete a term project that utilizes object oriented programming.
3
CMP 330
Prerequisite: CMP 120
This course introduces the analysis of algorithms and the effects of data structures on them. Topics include 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, solution of recurrence relation and reductions between problems.
3
CMP 340
Prerequisite: CMP 120
This course covers the fundamental concepts of programming language design and implementation. Topics include: language paradigms, syntax and semantics; names, binding, allocation, data structures, data types; scopes; control structures, data flow, concurrency; exception handling; subprograms; comparison of imperative, functional, logical, and object-oriented programming languages.
3

Professional Core Courses: Application Courses
Course Code Course Code Credits
(7 Courses – 21 Credit Hours)
CMP 343
Prerequisite: CMP 270 Essentials of Networking
The course is an introduction to computer security. Course topics include: computer security incident response process; computer criminal evidence collection, analysis and handling, email investigation, malicious code investigation, network traffic analysis and router investigation, hacker tools analysis, and computer/network forensic report writing. The course identifies and examines information security threats, information security methods, and implementation approaches used in information technology industry e.
3
CMP 350
Prerequisite: None
This course introduces the fundamental concepts for design and development of database systems. Topics include: review of relational data model and the relational manipulation languages SQL and QBE; integrity constraints; logical database design, dependency theory and normalization; query processing and optimization; transaction processing, concurrency control, recovery, and security issues in database systems; object-oriented and object-relational databases; distributed databases; emerging database applications.
3
CMP 360
Prerequisite: CMP 120 Programming Logic Internship /CPT Qualified
This course introduces web development technologies. The topics include: web page design techniques, using web design editors, designing graphical user interface with image processing tools, client and server side scripting, and development of database applications. Upon completion, students should be able to employ advanced design techniques to create high impact and highly functional web pages and have hands-on experience in designing a website.
3
CMP 375
Prerequisite:None
Topics that this course covers include effective, productive information systems, design and evaluation of interactive computer systems, input and output devices, screen layouts, machine design, health issues and ergonomics, and organizational impacts.
3
CMP 440
Prerequisite: CMP 220 or CMP 330
This course covers the techniques in software design and development. Topics include: modern software engineering practice for long-term, large-scale programming projects; methods for requirements, specification, design, analysis, implementation, verification, and maintenance of large software systems; advanced software development techniques and large project management approaches; project planning, scheduling, resource management, accounting, configuration control, and technical documentation. Students organize, manage and develop a software engineering project.
3
CMP 498
Prerequisite: All 300-Level core courses
This is the first phase of a technical project that emphasizes engineering design principles on a specific topic in any field of computer science or engineering. It will be carried out by the senior student under the supervision of a faculty member. The first phase of the project includes identification of a topic and completion of the preliminary work. A progress report must be submitted at the end of the semester detailing the problem description, proposed solution approach, and a list of deliverables
3
CMP 499
Prerequisite: CMP 498 Capstone Project I
This is the second phase of the technical project that emphasizes engineering design principles on a specific topic in any field of computer science or engineering. It will be carried out by the senior student under the supervision of a faculty member. The first phase of the project must be completed in CMP 498. A written report summarizing the accomplishments of the project and an oral presentation are required in this course.
3

Electives (10 Courses – 30 Credits)

Course Code Course Code Credits
(Choose 10 Courses – 30 Credit Hours)
CMP 353
Prerequisite: CMP 343 Computer Security Principles Internship /CPT Qualified
This course studies the security concepts in developing software applications. Topics include design principles for secure software development, and some of the security issues in current programming and scripting languages, database systems Web servers, as well as issues in web applications security.
3
CMP 355
Prerequisite: CMP 120 Programming Logic
This course covers the fundamental concepts of C/C++ programming language. Topics include variables, expressions and interactivity, relational and logical operators, looping, functions, arrays, pointers, classes, file operations, inheritance, polymorphism and virtual functions. Student completes a term project that utilizes C/C++.
3
CMP 365
Prerequisite: Completion of the program core courses
This course introduces the fundamentals of project management, beginning with project definition and culminating in the post-project review. Students learn techniques, terms and guidelines that are used to manage costs, schedules, risk, group dynamics and technical aspects throughout the life cycle of the project. The course also investigates peculiarities of projects when services are outsourced in another department in the organization, domestically, and internationally.
3
CMP 373
Prerequisite: CMP 343 Computer Security Principles
This course discusses security concepts and issues relative to a wide range of operating systems, as well as existing tools and technologies for setting up a secure system. Topics include vulnerabilities and risk assessment in operating systems, secure passwords, and trusted operating systems.
3
CMP 389
Prerequisites: All fundamental for the program, and approval from the Dean
This course offers the opportunity and challenge of self-directive, independent study; develops the individual's ability as an independent student; and enables the student to pursue needed study in a field in which appropriate courses are not being offered during a given term.
3
CMP 391
Prerequisite: Permission from the Dean
This course provides practical experience through hands on activities for undergraduate students in direct connection with the core courses taken in their program. Students will have the ability to apply theoretical concepts in real life applications, and to extend their knowledge base examples of real life applications. Students are expected to work at least 135 hours per semester. Students are required to attend two meetings/seminars with their faculty advisor to determine learning objectives and assess how well learning objectives are being accomplished.
3
CMP 392
Prerequisite: Permission from the Dean
This course provides practical experience through hands on activities for undergraduate students in direct connection with the core courses taken in their program. Students will have the ability to apply theoretical concepts in real life applications, and to extend their knowledge base examples of real life applications. Students are expected to work at least 135 hours per semester. Students are required to attend two meetings/seminars with their faculty advisor to determine learning objectives and assess how well learning objectives are being accomplished.
3
CMP 420
Prerequisite: CMP 375 Human-Computer Interaction Internship /CPT Qualified
This course surveys methods for evaluating user interfaces. For projects, students will perform a heuristic evaluation, a cognitive walkthrough, a usability test and a comparison study. Class meetings will also introduce, discuss and occasionally practice additional methods such as user modeling and questionnaires.
3
CMP 443
Prerequisite: CMP 343 Computer Security Principles Internship /CPT Qualified
This course discuses the Network Security principles and applications, including authentication applications. IP security, Web security, network management security, wireless security and system security.
3
CMP 445
Prerequisites: CMP 250 or CMP 260 Internship /CPT Qualified
This course introduces the fundamentals of distributed systems and algorithms. Topics include: distributed systems architecture; IO subsystems; distributed shared memory; load-balancing; cache coherency; message passing; remote procedure calls; group communication; naming and membership problems; asynchrony, logical time and consistency; fault-tolerance and recovery.
3
CMP 463
Prerequisite: CMP 343 Internship /CPT Qualified
This course surveys the processes of performing computer crime investigations. The course covers the recovery and analysis of digital evidence, addressing legal and technical issues. Forensic examination techniques of common systems are used to illustrate typical investigative processes.
3
CMP 465
Prerequisites: CMP 330 Data Structures & Analysis
This course covers theoretical frameworks of computing and their relations to formal grammars and languages. Topics include: finite state machines; regular languages and their limitations; tape automata, pushdown automata; context free languages, normal form grammars; Turing machines, halting problem; unsolvable decision problems.
3
CMP 466
Prerequisite: CMP 330 or CMP 220 or CMP 360 Internship /CPT Qualified
This programming course is designed to introduce and familiarize the student to programming mobile devices using current platforms and mobile device emulators. An overview of the most common tools and techniques for writing mobile applications are examined, with focus on the development of the user interface and the usability of the application.
3
CMP 467
Prerequisite: CMP 350 Database Concepts Internship /CPT Qualified
The student explores the software development life cycle for Web applications. It provides an in-depth coverage on critical Web application development topics combined with technical foundations and hands-on experiences, and implementation of real-world Web applications and secure Web transactions.
3
CMP 471
Prerequisites: All fundamental courses in the program Internship /CPT Qualified
This course will cover topics of current interest selected by the faculty. Subjects will be announced before each semester.
3
CMP 472
Prerequisites: All fundamental courses in the program Internship /CPT Qualified
This course will cover topics of current interest selected by the faculty. Subjects will be announced before each semester.
3
CMP 489
Prerequisites: All fundamental and Core courses for the program, and approval from the Dean
Offers opportunity and challenge of self-directive, independent study; develops the individual's ability as an independent student; and enables the student to pursue needed study in a field in which appropriate courses are not being offered during a given term.
3
CMP 491
Prerequisite: Permission from the Dean
This course provides practical experience through hands on activities for undergraduate students in direct connection with the core courses taken in their program. Students will have the ability to apply theoretical concepts in real life applications, and to extend their knowledge base examples of real life applications. Students are expected to work at least 135 hours per semester. Students are required to attend two meetings/seminars with their faculty advisor to determine learning objectives and assess how well learning objectives are being accomplished.
3
CMP 492
Prerequisite: Permission from the Dean
This course provides practical experience through hands on activities for undergraduate students in direct connection with the core courses taken in their program. Students will have the ability to apply theoretical concepts in real life applications, and to extend their knowledge base examples of real life applications. Students are expected to work at least 135 hours per semester. Students are required to attend two meetings/seminars with their faculty advisor to determine learning objectives and assess how well learning objectives are being accomplished.
3
CAR 100
Prerequisite: None.
In-depth exploration and assessment of career values, occupational interests, skills, personality style, work environment preferences; concentration and career exploration; exposure to career and occupational information resources. Students learn and practice job search strategies and tools, including resumes and interviewing skills; decision-making, goal-setting and action planning; and self-marketing techniques for effective career management.
3