CSCE 482 – Senior Capstone Design (Spring 2024, Fall 2023, Spring 2023, Spring 2022, Spring 2021, Spring 2020, Fall 2019)
Effective design requires identifying the “right” problem to solve, building components that meet that problem’s needs, and integrating components into a single solution system. As problems become more challenging, solid design, follow through, and teamwork skills become necessary to developing a solution. Every computer scientist and computer engineer who wants to work on big problems must have these skills.
CSCE 315 – Programming Studio (Fall 2022, Summer 2022 Study Abroad, Spring 2022, Fall 2021, Spring 2021, Fall 2020)
Up until now, most of the programs that you have been asked to write could probably fit in your mind. But software products that you are using daily simply could not be recreated by you and 10 of your best friends in an afternoon, weekend, or semester. It is estimated that Windows XP has 50,000,000 lines of code. The average developer writes 10 - 20 useful lines of code per day. So, a couple of engineers and 2 friends could break away and start a new company and create a new "Windows" operating system in only about 1700 years. A 1700 year project is unreasonable. There must be a better way. In this course, you get to try out a better way. You will dive into the world of software engineering and hone your teamwork (and, yes, coding) skills. Teamwork is critical, and software design methodologies are worth their weight in code. Learning these methods of working together, managing requirements, producing products, testing, delivering, maintaining is every bit as valuable as coding.
CSCE 411 – Design and Analysis of Algorithms (Summer 2023 Study Abroad, Spring 2020, Spring 2019)
Modern computers, from handheld devices to super computers with thousands of cores, rely on efficient algorithms for solving all types of computing problems. There are many algorithms to choose from, and not all are the right one for the job. This course teaches you how to recognize the best tool to use for your specific computing problem, design new algorithms based on the techniques in this course, show that your algorithms run correctly, and prove bounds on the amount of time and space your algorithms need.