Four-Year Plan
Here is a suggested plan to complete the software
engineering major in four years. With some work, the major can be
fit into 3 years if you are declaring your major late.
Freshman
Fall Semester
MA & CS courses
- CS 151 - Foundations of Computer Science
Introduction to mathematical problem solving, with emphasis on techniques for designing computer-based solutions. Concepts include problem-solving principles, logic, proof techniques, sets, sequences, functions, relations, and inductive and recursive thinking. Prerequisites: MA 101 or 102 or equivalent. (U)(3)
- MA 106 - Calculus & Analytic Geometry 1
The beginning calculus course for properly prepared students. Topics include differentiation, integration, elementary differential equations, exponential and logarithmic functions, trigonometric functions. Applications are emphasized. Prerequisite: MA 102 or equivalent. (U)(5)
Optional Course (If needed)
- CS 142 - Introduction to Computer Science and Programming
An introduction to programming in a high-level language (assignment, data types, expressions, selection, loops, functions, arrays) including parallel programming for supercomputers. Topics such as AI, software engineering, and databases, are also discussed. Prerequisite: MA101, or equivalent. (U)(3)
Spring Semester
MA & CS courses
- CS 248 - Object-Oriented Programming and Data Structures
This course is an introduction to object-oriented programming using Java. Topics include algorithm analysis, recursion, the stack, queue, tree, and heap data structures, sorting algorithms, and GUI programming. A brief survey of computer science is also included: history, software engineering, computer organization, operating systems, networks, programming languages, databases, artificial intelligence, and theory. Prerequisites: CS 142 or equivalent and CS 151. (U)(5)
- MA 107 - Calculus & Analytic Geometry 2
Continuation of MA 106. Topics include methods of integration, improper integrals, infinite series, conic sections and polar coordinates. Prerequisite: MA 106. (U)(4)
Sophomore
Fall Semester
MA & CS courses
- CS 321 - Computer Organization
Principles of computer architecture are introduced from a layered point of view, beginning at the level of gates and digital logic, and progressing through micro-programming, the machine language execution cycle, addressing modes, symbolic assembly language, and the fundamentals of operating systems. Advanced topics including pipelined and parallel architectures are also covered. Corequisite: CS 248. (U) (3)
- CS 351 - Algorithms
A systematic study of data structures and algorithms with an introduction to theoretical computer science. Topics include lists, stacks, queues, trees, and graph structure, searching and sorting algorithms, mathematical algorithms, time and space complexity, an introduction to the theory of NP-completeness, and an introduction to computability theory. Prerequisite: 248. (U)(3)
Spring Semester
MA & CS courses
- CS 252 - Foundations of Computing 2
As a continuation of CS151, concepts include mathematical logic, formal grammars, algebraic structures, finite state machines and automata, graph theory, and combinatorics. Prerequisite: CS151 (U) (3)
- SE 361 - Object-Oriented Design
This course uses the Unified Modeling Language (UML) as a vehicle to introduce the basic principles of object-oriented methodology and design, covering classes, objects, data abstraction, polymorphism, information hiding and relationships among classes such as inheritance, association, aggregation and composition. Specific design techniques are covered for object-oriented programming languages such as Java and C++. The course also provides a first exposure to the software development lifecycle of object-oriented software applications. A small team design project is required. Prerequisite: CS 248. (U)(3)
Junior
Fall Semester
MA & CS courses
- SE 461
Techniques, principles, and processes for developing large, complex software systems: Systems analysis and specification, modeling, design patterns, implementation, validation and verification, quality assurance and project management. A team-based software project is required. Prerequisite: SE361. (U-G)(3)
- CS 485 - Computer Ethics
Ethical and social issues in computing with emphasis on professional responsibilities, risks and liabilities, and intellectual property. Prerequisite: CS 142 and sophomore standing. (U-G)(1)
- MA 162 - Statistical Methods
An introduction to applied statistics for students in the natural, social, and managerial sciences. Topics include sampling, data analysis, experimental design, and the use of computer-based statistical software. Prerequisite: MA 101 or equivalent. (U)(4)
- CS 433 - Database Systems
An introduction to the theory, design and use of modern database management systems. Topics include the relational, entity-relationship, and object-oriented data models, query languages such as SQL, file systems, concurrency and deadlock, reliability, security, and query optimization. Prerequisites: CS 248, CS 252, and CS 321. (U-G) (3)
Honors Only
- CS 490
An introduction to research methodology in computer science, including an overview of computer science literature and techniques for presenting and evaluating research results. Prerequisites: CS321, CS351, and SE361, or junior standing and permission of the department. (U)(2)
Spring Semester
MA & CS courses
- SE 462
Fundamental concepts, principles, techniques and tools for the maintenance and evolution of legacy software systems. Software maintenance and evolution process models, reengineering, reverse engineering, and program comprehension tools. A modernization project is required. Prerequisite: SE361. (U-G)(3)
- CS 452 - Parallel Algorithm Design & Programming
A study of theoretical and practical paradigms of parallel algorithm design. Topics include model costs, lower bounds, architecture and topology, data-parallelism, synchronization, transactional memory, message passing, and parallel design for sorting, graphs, string processing, and dynamic programming.
- EPICS
Senior
Fall Semester
MA & CS courses
- SE 463 - Testing & Quality Assurance
Basic concepts, systematic techniques and tools involved in testing and QA of software systems. Some topics to be covered include black and white box testing techniques, object-oriented testing, regression testing, system integration testing, planning and reporting of testing activities. Prereq: SE361
- CS 441
Emphasizes the principles and programming paradigms that govern the design and implementation of contemporary programming languages. Includes the study of language syntax, processors, representations, and paradigms. Prerequisites: CS 252, CS 321, and SE 361. (U-G) (3)
Or
- CS 435
An introduction to computer networks from a layered point of view beginning with the physical and data link layers, and progressing through the medium access layer, the network layer, the transport layer, and the applications layer. Specific content includes Ethernet, TCP/IP, and the Web. Students will write client/server programs that communicate across a network. Prerequisite: CS 321. (U-G) (3)
Spring Semester
MA & CS courses
- SE 473
In-depth study of special topics not covered in regular courses. Prerequisite: Permission of the department. (U-G)
- SE 411 - Internship
Supervised work experience in software engineering. Prerequisites: SE361, SE461, CS485, and one of SE462 orCS382 or CS383. (U)
- CS/SE Elective
Notes
- CS142 is designed for students who cannot program yet. If you
have had C++, Java, or Visual Basic up through if statements,
loops, arrays, and functions, you do not need CS142, although you
can take it for review if you wish.
- We strongly recommend taking foreign language
(FL101,102,203,204) to satisfy the LAS language requirement as soon
as possible to avoid losing any vocabulary you may remember from
high school.
- If you took the placement test in a foreign language, you may
only need 3, or even 2 semesters of foreign language.
- Some courses could be taken earlier or later than specified
(For example, CS252 could be taken as early as the spring, Freshman
year).
- If you need to take MA102 before CS151 and MA106, many courses
would be pushed back a semester or year. Compensate by taking more
core courses in your first semester (say, social science or science
core). Note that CS142 requires MA101, but not MA102, so you may be
able to take CS142, if you need it, during your first semester.
As you can see, there is plenty of room to pick up a second
major or minor in another department. Some popular choices include
a math major or minor, or a minor in the College of Business
Administration. A double major with a foreign language is also easy
to fit in.
If you plan for it, you can also fit in a semester of study
abroad. It may be difficult to take CS courses at other
institutions and have them count effectively in our program, so
plan to take primarily electives and core courses.
If you have been invited, you can also do the honor's program
with the CS major. For details, see the Honor's Program Web Page.
CS490 is the departmental honors course.