Welcome to CPS 3525

The full-stack software engineer role is a high-paying, in-demand position across various industries. It requires expertise in software development and system integration, spanning front-end, back-end, and middleware technologies. This course is designed to train students in foundational and advanced programming skills with a focus on the Linux environment. Students will gain proficiency in back-end development using Java, C++ and scripting languages, as well as front-end development with HTML and CGI scripting.

The course will also cover the basics of the Linux operating system, providing students with a solid foundation for software development in a Linux environment. Students will gain practical knowledge of how compiled and interpreted languages function as back-end pipeline processes on Linux systems, integrating with front-end interfaces. Comprehensive training will be provided to address diverse coding challenges through hands-on exercises and assignments, designed to reinforce both theoretical understanding and practical application of the concepts covered.

If you don't enjoy coding and debugging, please do not take this course.

We will cover the following topics:
Prerequisite
For CS students: CPS 2232 (Data Structures) with grade C and above. IT students will need special permission after passing CPS 2240 (IT Data Structures) with grade B+ and above.

Note: This course is available only in the spring semester.

Instructor: Dr. Ching-yu (Austin) Huang

Class information:
CPS 3525 Course Description
This course covers three main components. 1). Explore basic Unix/Linux operating system concepts, commands, filesystem, processes, environment variables, scheduling, and tools. 2). Design and develop automated applications using script and compiler languages in a Linux system. 3). Integrate programs on Linux with web interfaces and applications. This course emphasizes both concepts and hands-on lab exercises.

Student Learning Outcomes
Upon completion of this course, the student will be able to:
  1. Explain and demonstrate the Unix/Linux commands, processes, utilities, and tools.
  2. Utilize script and compiler languages to write applications in a Unix/Linux system.
  3. Design and develop automated programs in a Unix/Linux system.
  4. Develop and integrate web applications with programs with Unix/Linux.

Books and resources
Requirements - Students will need the followings to do exercsies and assignments:
In addition to the written exams, this course requires students to implement 3 projects to integrate the pipeline processes of front-end browser and back-end programs on Linux in different lanaguages. Below are just examples.