| Syllabus: Fall 2024 |
|
Credit hours: 3 |
| Class times: 11:15am – 12:05am, MoWeFr |
Classroom: Harrington Hall 108 |
| Class # (on-campus: 280-01): 36310 |
Class # (on-line: 280-02): 36311 |
| |
| Instructor: Wen-Chen Hu (my teaching philosophy)
|
Office: Upson II 366K |
:
https://und.zoom.us/j/2489867333
|
Email: wenchen@cs.und.edu
|
| Office hours: 02:30pm – 04:30pm, MoWeFr
|
| |
| Prerequisite: CSCI 265 Introduction to Programming Languages with a grade of C or better
|
| |
| Synchronous class delivery:
The class lectures will be delivered synchronously via https://und.zoom.us/j/2489867333, and the Zoom video will be posted on the Blackboard afterwards.
Students can watch the video clips anytime they want.
|
| |
| Lecture notes:
No textbook will be used.
Instead award-winning, interactive, informative, and practical lecture notes (based on GeeksforGeeks, TutorialsPoint, W3Schools, JavaTPoint, and other online documents and user manuals) and detailed and precise class instructions will be provided.
Collectively, the lecture notes and instructions are more like a small book, which supplies much more information than regular notes do and makes the subject studies much easier.
Students will not have problem learning the subjects or taking the exams after studying them and doing programming exercises.
|
Week
|
Class |
Topic |
Due |
Where |
| 0 |
|
0. Computer Career and Data Research & Technologies |
|
|
| 0.1 A computer career |
|
|
| 0.2 Data research |
|
|
| 0.3 Data technologies |
|
|
| 1 |
08/28 08/30 |
1. Introduction to CSCI 280 |
|
|
| 1.1 Course outline |
|
 |
| 1.2 Object-oriented programming (OOP) |
|
|
| 1.3 C++ vs Java |
|
|
| 2 |
09/04 09/06 |
2. Programming Exercise I |
|
|
| 2.1 Specifications |
|
|
| 2.2 Step-by-step construction |
|
|
| 2.3 Software and tools to be used |
|
|
| 09/04 |
Last day to add a course or drop without record — 100% refund
Last day to add audit or change to/from audit
Last day to receive a refund on a dropped class
Drops after the last day to add will appear on a transcript.
|
|
|
| 09/02 |
|
|
|
Holiday, Labor Day (Monday) — no classes
|
|
|
|
| 3 |
09/09 09/11 09/13 |
3. Introduction to Java |
|
|
| 3.1 A hello-world Java program |
|
|
| 3.2 Java components |
|
|
| 3.3 Java built-in packages |
|
|
| 4 |
09/16 09/18 09/20 |
4. Basic Syntax |
|
|
| 4.1 My first Java program |
|
|
| 4.2 Naming conventions |
|
|
| 4.3 Variables |
|
|
| 5 |
09/23 09/25 09/27 |
5. Programming Exercise II |
|
|
| 5.1 Specifications |
EX I |
|
| 5.2 Step-by-step construction |
|
|
| 5.3 CGI (Common Gateway Interface) |
|
|
| 6 |
09/30 10/02 10/04 |
6. Files and I/O |
|
|
| 6.1 Arrays |
|
|
| 6.2 Files |
|
|
| 6.3 Input and output |
|
|
| 7 |
10/07 10/11 |
7. Basic Syntax (Cont.) |
|
|
| 7.1 Data types |
|
|
| 7.2 Operators |
|
|
| 7.3 User input |
|
|
| 10/09 |
|
|
|
Exam I (for both on-campus and on-line students; 6:30pm – 8:30pm, Wednesday)
|
|
|
|
| 8 |
10/14 10/16 10/18 |
8. Non-Primitive Data Types |
|
|
| 8.1 Number class |
EX II |
|
| 8.2 Character and String classes |
|
|
| 8.3 Boolean class |
|
|
| 9 |
10/21 10/23 10/25 |
9. Control Structures |
|
|
| 9.1 Decision making |
|
|
| 9.2 The if statements |
|
|
| 9.3 The switch statements |
|
|
| 10 |
10/28 10/30 11/01 |
10. Loops and Exceptions |
|
|
| 10.1 The while loop |
|
|
| 10.2 The for loop |
|
|
| 10.3 Exceptions |
|
|
| 11 |
11/04 11/06 11/08 |
11. Classes and Objects |
|
|
| 11.1 Classes |
|
|
| 11.2 Objects |
|
|
| 11.3 Methods |
|
|
| 12 |
11/13 11/15 |
12. Classes and Objects (Cont.) |
|
|
| 12.1 Constructors |
EX III |
|
| 12.2 Member methods |
|
|
| 12.3 Accessing methods |
|
|
| 11/15 |
Last day to change to or from S/U grading
Last day to change to or from audit grading
Last day to drop a full-term course or withdraw from school
|
|
|
| 11/11 |
|
|
|
Holiday, Veteran’s Day (Friday) — no classes
|
|
|
|
| 13 |
11/18 11/22 |
13. Inheritance and Association |
|
|
| 13.1 Inheritance |
EX III |
|
| 13.2 Aggregation |
|
|
| 13.3 Composition |
|
|
| 11/20 |
|
|
|
Exam II (for both on-campus and on-line students; 06:30pm – 08:30pm, Wednesday)
|
|
|
|
| 14 |
11/25 |
14. Abstraction and Encapsulation |
|
|
| 14.1 Abstraction |
|
|
| 14.2 Encapsulation |
|
|
| 14.3 Interfaces and packages |
|
|
11/27 11/28 11/29 |
|
|
|
Holidays, Thanksgiving Recess (WeThFr) — no classes
|
|
|
|
| 15 |
12/02 12/04 12/06 |
15. Polymorphism, Overloading, and Overriding |
|
|
| 15.1 Polymorphism |
|
|
| 15.2 Overloading |
|
|
| 15.3 Overridding |
|
|
| 16 |
12/09 12/11 |
16. Miscellaneous Java Topics |
|
|
| 16.1 Generics |
|
|
16.2 Collection and ArrayList |
|
|
| 16.3 Wrap-up |
EX IV |
|
| 17 |
12/18 |
|
|
|
Final exam (for both on-campus and on-line students; 06:30pm – 08:30pm, Wednesday)
|
|
|
|
| 18 |
12/24 |
Grades posted before noon, Tuesday |
|
|
Computer science is different from many other disciplines (like electrical engineering).
It is more like a professional school (such as culinary schools), which emphasizes practical works instead of subject studies because many IT companies want the new recruitees to start contributing immediately.
There are three kinds of computing personnel:
- Developers:
- Positions (plenty): Developers of front-end and back-end web pages, mobile apps, and all kinds of software
- Skills (more stable):
Programming languages (such as C++ and Java), web programming, mobile app development, data processing and management including databases, and data structures & algorithms
- Practitioners:
- Positions (not many): Experienced personnel like data scientists, database or system administrators, security analysts, and network architects
(more applications & configuration and less development)
- Skills (based on the needs of companies):
Databases, data warehousing, data lake, Hadoop, MapReduce, Linux, SPSS, SAS, Cogno, Matlab, Tableau, etc.
- Researchers:
- Industrial positions (few and based on the needs of corporations): High quality personnel required for the advanced areas like artificial intelligence, security, computer vision, autonomous driving, and speech recognition
- Academic positions/trends (few and changed according to the government policies):
❓ ⇐ artificial intelligence ⇐ big data ⇐ high-performance computing ⇐ security ⇐ (mobile) networks
Unless you have an impressive resume or a strong connection, practicing tens or hundreds of questions posted at the
LeetCode is a must in order to secure a job at corporations (like Google and Facebook).
Otherwise, your chance of answering the questions correctly is low because of their high difficulty and time constraint.
In addition, you need to create
LinkedIn pages to show your achievements, and may consider uploading your projects to the
GitHub to showcase them.
Remark I:
Definitions, terminologies, and theories will be discussed minimally in this course.
Instead practical works and programming knowledge will be emphasized and enforced.
Remark II:
Java may be the most important production language, and the only effective way to learn a programming language is practicing, instead of studying concepts or writing some testing programs.
No pain, no gain 😂
Remark III:
According to a study, students in computer-science courses learn much more by building large-scale exercises instead of many small-scale test programs, which give fragmented knowledge contrary to solid understanding of the language.
Remark IV:
Remote work is a trend for IT workers.
This course also allows you to learn how to do it by using the VPN (virtual private networks) to connect to our Linux server
undcemcs02.und.edu, and having the exercises set up at the server and be accessed from the clients.
Instructor’s qualification:
The instructor has more than five years’ experience in programming language research, design, and implementation.
He designed and implemented a LISP/PROLOG mixed language system for AI (artificial-intelligence) developers including YACC-like software, UNIX-like editor, LISP compiler, PROLOG compiler, heap storage management system, and POPLOG virtual machine for which both LISP and PROLOG compilers generate code by writing about 20,000 lines of C code.
University of North Dakota Course Description (CSCI 280) —
An introduction to the concept and execution of object-oriented programming, using an appropriate language.
Includes an introduction to object creations, classes, inheritance, interfaces, exceptions, overloading, and more.
Java from Wikipedia —
Java is a general-purpose programming language that is concurrent, class-based, object-oriented, and specifically designed to have as few implementation dependencies as possible.
Java applications are typically compiled to bytecode that can run on any Java virtual machine regardless of computer architecture.
Object-Oriented Programming (OOP) from Wikipedia —
It is a programming paradigm based on the concept of “objects,” which can contain data (attributes) and code (methods).
A feature of objects is an object’s procedures that can access and often modify the data fields of the object with which they are associated.
In OOP, computer programs are designed by making them out of objects that interact with one another.
Java Platform, Standard Edition (Java SE) —
Internet-Enabled Java System Construction Steps —