Object-Oriented Programming (OOP)

The course will focus on object-oriented software construction using an object-oriented language.

“Object-oriented” means that the software is a collection of objects that interact with each other.

In esence, identify the physical real-world objects that make up the project problem statement, and then translate those objects into prgrammatic classes that interact with each other, much as they would do in the real world.

An object is an instance of a class.

A class is a user-defined data type: like a struct in C.

A class defines

fields (member variables): a collection of variables that each object that is an instance of the class will possess

methods (member functions): define the behavior of the objects that are instances of the class

The key to developing good object-oriented software is figuring out what objects/classes you need, and what the behavior of those objects/classes should be!

In other words, the important thing is WHAT objects do, not HOW they do it

This is the distinction between design and implementation:

Design is figuring out WHAT the objects should do — their behavior

Implementation is taking the desired behavior and figuring out HOW the behavior should be accomplished

This course focuses on both the design (the WHAT), and the implementation (the HOW). You will be learning WHAT the WHAT is while also learning HOW to do the HOW!

ChatGPT (GPT = Generative Pre-Training)

The future of AI arrived on November 30, 2022 when OpenAI released ChatGPT to the general public. Your future as engineers changed forever on that date, too. The introduction of high-level computer languages and then Integrated Development Environments (IDEs) were both paradigm shifts in software development - but they took years, even decades to be adopted and to evolve. ChatGPT changed software development literally overnight. Languages like C, C++, Java, Python, C#, combined with IDEs made programming easier and more efficient, but a developer still had to write the code. In the hands of a developer who knows how to “collaborate” with ChatGPT, ChatGPT can be a very competent assistant and pair programmer. ChatGPT can be a competent co-developer - it can write some rather decent code, as well as some pretty bad code.

Background

The time is now upon us! Artificial Intelligence has developed to the point that it can understand and carry out instructions in normal language format. AI can generate programs, summarize articles, do extensive searches, and many other professional tasks. It also has its limits, some of which are still being discovered. This lab investigates the vast possibilities and potential risks of using artificial intelligence to learn programming. Students will ask questions specifically related to the course material. The responses could potentially be written at a level that is too complex for student understanding. The point of the [ChatGPT lab] (../labs/lab00.html) is to experiment with the capacity of ChatGPT and how it can serve you as a tool for learning content as well as completing tasks.

ChatGPT - Benefits and Warnings

We now live in a world where a program can interpret verbal instructions into algorithms. With only a little knowledge, people can write programs, create websites, draw intricate pictures, create music, and many other tasks. This kind of capability has never before been even a consideration to society, other than robots and droids of science fiction.

Naturally, with this capability, education will be enhanced at an unprecedented level. Each student can have their own personal tutor that helps with every topic. With experimentation, there could be untold ways an AI-assisted classroom can be quite effective. This may not be a surprise to anybody, but it will still be jolting when AI fully kicks in. At some point, the question may be raised whether human teachers are truly necessary anymore. However, with these benefits is the other side of the proverbial coin.

If ChatGPT can help students learn, it is equally capable at helping students bypass the pedagogical security (a.k.a cheating). Students will be able to write papers, summarize articles and books, draw pictures, and create music, all with just a few sentences. The problem is, the goal of learning is to acquire new skills. ChaptGPT speeds up the process to the point that learning is not taking place.

At the same time, it can be a benefit to know how to use ChatGPT to get things done faster. The real world will certainly appreciate experience in this skill. So, what are we, as teachers, to do with these last few years before the profession is regarded irrelevant? The decisions we make now will affect all of education in the future.

Completing Tasks vs. Learning Skills

It is beneficial to students to mentally distinguish between learning a skill and completing a task. When completing a task, success is measured by the result given. How good of a project is this submission? However, completing a task does not fully represent whether the task can be repeated again successfully. If a student completes a task without learning how to do it, they may not be able to do it a second time. Completing tasks and learning skills are important, and are related to each other, but both must be accomplished for a successful education of the topic. If a teaching style is based only on completing tasks, the students may not learn fully, simply using ChatGPT to complete tasks without learning how to replicate the work.

By separating tasks from learning skills, both can be covered separately. Students are instructed to complete tasks, with the idea that completing them will result in learning. Then students are tested in ways that ChatGPT is not available. To demonstrate learning, students must show they can complete the task without help.

Of course, it must be acknowledged that using the ChatGPT system itself is a skill that must be learned and tested. There is an overlap that can be addressed, but should not be used as an excuse to use ChatGPT for everything. At the root, students must be able to complete work with and without help from ChatGPT.

In terms of exacts, here are some common teaching practices that will help limit negative effects of ChatGPT:

Ultimately, your teammates (in this course, and in the Capstone courses to come in your senior year) and your employers will hold you accountable for having learned the skills as well as completing the tasks.

Let’s look at the ChatGPT lab.