All undergraduate engineering degree programs within the School of Engineering and Applied Sciences (SEAS) include a computer programming requirement.

In many cases, transfer students complete a computer programming course at another academic institution, and then seek to use this credit to satisfy the relevant degree requirement at UB. In other cases, students may complete computer science related Advanced Placement coursework in high school. In what follows, we outline SEAS policies regarding the articulation of transfer credit and test credit for computer programming courses.

Articulation of transfer credit for computer programming courses is complicated by the diversity of approaches and languages used to introduce programming concepts. SEAS is a microcosm of this diversified approach. Three entry-level computer programming courses are offered within SEAS:

- CSE 115 Introduction to Computer Science for Majors I (Python and JavaScript)
- EAS 230 Engineering Computations (Matlab)
- EAS 240 Introduction to Programming for Engineers (C and C++)

While these courses feature different languages, they all introduce fundamental aspects of structured programming and illustrate concepts through application to scientific and engineering problems.

Within SEAS, we have adopted an approach that aims to afford flexibility while providing resources that enable students to master the essential concepts of a specific UB course. The approach is consistent with the SUNY Seamless Transfer policy.

SEAS articulates external courses as follows:

- Courses that provide a foundation in procedural programming, covering topics such as basic programming concepts (e.g., variables, types, expressions, statements), control structures, functions, use of aggregate data structures (such as lists and maps), and file I/O and network communications, involving a substantial hands-on programming component, and thereby provide sufficient preparation for CSE116, articulate to CSE115.

- Courses that include a formal Matlab programming component, theory and programming of linear algebra (solutions and properties of linear systems), and science/engineering applications articulate to EAS 230.

- Courses that include C and C++ programming and science/engineering applications map to EAS 240.

- If the course does not map to CSE 115 / EAS 230 / EAS 240, we then check to see if it matches the SUNY Seamless Transfer definition for a “Computer Programming” course. To qualify, the course must introduce fundamental aspects of structured (procedural) programming and illustrate concepts through application to scientific and engineering problems. If it does, then we articulate the course to the "mask" EAS999TRCP.

Any of these courses (EAS 230 / EAS 240 / CSE 115 / EAS 999TRCP) can be used to satisfy the relevant UB computer programming degree requirement for an engineering program. By extension, all computer programming courses satisfy a pre/corequisite involving CSE 115, EAS 230, or EAS 240.

Students with a score of 5 on the Computer Science A Advanced Placement Exam are awarded UB credit for CSE 115. This credit can be used to satisfy the relevant UB computer programming degree requirement for an engineering program. In addition, it will satisfy a pre/corequisite involving CSE 115, EAS 230, or EAS 240.

Students with a score of 4 or 5 on the Computer Science Principles Advanced Placement Exam are awarded UB credit for CSE 101. This credit *cannot* be used to satisfy a UB computer programming degree requirement for an engineering program.

Some engineering programs within SEAS expect their students to be proficient in the material covered in a specific programming course (details provided below). In many cases, mastery of these concepts is required to successfully complete upper-level coursework. To assist in this regard, SEAS has developed self-study packages that students can use as a resource to learn the material they did not obtain from the computer programming course they completed. It is essential that students utilize these or other resources to become proficient in the skills needed for upper-level coursework in the major.

Here are links to the self-study packages (may require ubitname and password):

In what follows below, we provide additional program-specific guidance regarding the computer programming requirement.

Students pursuing a degree in aerospace engineering or pursuing a dual major in mechanical and aerospace engineering will need to be proficient at structured programming and possess familiarity with solutions and properties of linear systems using Matlab. Matlab is used extensively within the required course MAE 376. If you are not proficient with Matlab and linear algebra, it is critical that you utilize the EAS 230 Engineering Computations Self Study Package to prepare yourself **before** you take MAE 376.

Students pursuing a degree in biomedical engineering will need to be proficient at structured programming and possess familiarity with Matlab. Matlab is used extensively in two required upper-level courses (BE 307 and BE 406). Specifically, for BE 307, students should be familiar with linear systems analysis using Matlab. For BE406, students should be proficient with writing simple Matlab scripts that include FOR loops, WHILE loops, using conditions (e.g. IF statements) and understanding how to index cell arrays. Basic mathematical and statistical operators should also be well understood.

Students pursuing a degree in chemical engineering will need to be proficient at structured programming and possess familiarity with solutions and properties of linear systems using Matlab. Matlab is used extensively in the required course CE 341. If you are not proficient with Matlab and linear algebra, it is critical that you utilize the EAS 230 Engineering Computations Self Study Package to prepare yourself before you take CE 341. Note that this course is a prerequisite for other courses in the sequence, so any students planning to graduate in two years upon arrival at UB must be prepared to take CE 341 upon transferring in.

Students pursuing a degree in civil engineering do not have any required upper-level courses that require a specific programming language; elective courses CIE 411 and CIE 423 utilize Matlab. No further action is needed if you successfully transfer a programming course from another university. Students are encouraged to have or acquire proficiency in Excel, including the use of direct and indirect referencing, common mathematical functions, plotting, regression analysis, and Solver. Proficiency in Matlab is also desirable for automating tasks in design courses.

The BS in Computer Engineering requires the programming course CSE 115 Introduction to Computer Science I (Python and JavaScript), which lays the foundation for programming requirements throughout the curriculum. Because computer engineers must understand not only the hardware components of a computer system but also how the hardware supports and interacts with software, such as the operating system and device drivers, computer engineers take several additional programming courses. These include CSE 116 Introduction to Computer Science II (Python and Scala), and CSE 220 Systems Programming (C), CSE 250 Data Structures (varies), CSE 321 Real-Time and Embedded Operating Systems (C), CSE 379 Introduction to Microprocessors and Microcomputers (ARM assembly), and CSE 450 Hardware/Software Integrated Systems Design I (varies) and CSE 450 Hardware/Software Integrated Systems Design II (varies).

If you do not have procedural programming preparation equivalent to CSE 115, it is critical that you utilize the CSE 115 Introduction to Computer Science for Majors I Self Study Package to prepare yourself **before** you take CSE 116.

The BS in Electrical Engineering requires the programming course EAS 240 Introduction to Programming for Engineers. EAS 240 covers the basics of procedural and object oriented programming through the programming languages C and C++. The combination of procedural and object oriented programming are central to the Electrical Engineering discipline. EAS 240 is required in part for the course EE379 Embedded Systems and Applications taken in the junior year of our program.

In addition, students pursuing a degree in Electrical Engineering are required to acquire knowledge in Linear Algebra. Our students may choose between the course MTH 309 Linear Algebra and EAS 230 Engineering Computations. Both give sufficient background in Linear Algebra to be used in the course EE 336 Fundamentals of Energy Systems taken in the junior year of our program.

Students pursuing a degree in environmental engineering do not have any upper-level courses that require a specific programming language; no further action is needed if you successfully transfer a programming course from another university. Students are encouraged to have or acquire proficiency in Excel, including the use of direct and indirect referencing, common mathematical functions, plotting, regression analysis, and Solver.

Students pursuing a degree in industrial engineering may take either EAS 230 or EAS 240, or transfer in credit for a similar programming course, as the upper-level courses do not require proficiency in a specific programming language.

Students pursuing a degree in mechanical engineering will need to be proficient at structured programming and possess familiarity with solutions and properties of linear systems using Matlab. Matlab is used extensively within the required course MAE 376. If you are not proficient with Matlab and linear algebra, it is critical that you utilize the EAS 230 Engineering Computations Self Study Package to prepare yourself **before** you take MAE 376.