Fundamentals of Computing I

list Preamble

info Description

The first in a two-semester sequence, Fundamentals of Computing I covers the foundational ideas upon which the discipline of computer science is based, and is the introductory course for cs and cse majors. Building on the core ideas that define structural programming, students learn procedural programming, then extend the concept with object-oriented programming. The fundamentals of algorithmic problem solving, modularity, efficiency, and the design of simple, user-friendly interfaces are also covered.

list Learning Outcomes

Upon successful completion of this course, students will understand...

file_download Software Requirements

All the software required for this course is free and listed below. For Mac users, the entire installation process is automated using this script. Windows and Linux users, however, will need to install the software manually.

Java jdk (Mac, Windows, Linux)

This is the software needed to build and run your Java programs. The latest Java Standard Edition Development Kit, or sdk, is available from https://www.oracle.com/java/technologies/downloads/.

Javafx sdk (Mac, Windows, Linux)

The examples from our textbook that involve graphics use the Javafx library. To work with those examples, you’ll need to download and configure the library, which is available from https://gluonhq.com/products/javafx/#javafx-builds.

Processing (Mac, Windows, Linux, Raspberry Pi)

Processing is a free Java library and integrated development environment, or ide, that is designed for artists and designers to learn computer programming. It’s visual in nature, and we’ll use it — along with Javafx — to work with computer graphics in this course. Download Processing from https://processing.org/download.

Git Client (Mac, Windows, Linux)

All in-class examples, assignments, and help is done via GitHub. Download the client for your computer here.

Package Manager (Mac, Windows)

Package managers provide an easy way to install software via your cli from a single registry. Install Homebrew for macos via The Terminal from https://brew.sh/; install Chocolatey for Windows via PowerShell from https://chocolatey.org/install.

Text Editor (Mac, Windows, Linux)

The code you write will require a text editor. Although there are many on the market, such as Sublime Text (nagware), for example, vs Code (open source) is the only editor supported in class. Download the Linux, Windows, or macOS version from https://code.visualstudio.com/.

EditorConfig (Mac, Windows, Linux)

EditorConfig is a tool that enforces consistent coding styles for everyone who works on a codebase. In our case, that codebase consists of all the examples in class and all the assignments you’ll submit throughout the semester. EditorConfig consists of an extension and a configuration file (.editorconfig) that goes in your home — or project — folder. Some editors and ides have EditorConfig built in. vs Code, unfortunately, is not one of them. Install the EditorConfig extension for vs Code from here, then download this .editorconfig file and place it in your home folder. Ensure the file name is exactly .editorconfig, starting with a dot and without a file extension.

VS Code Extensions

Linters, or static code analysis tools, are used by all professional software engineers. Start using one now. Install the following linter extensions for vs Code.

Make (Mac, Windows, Linux)

The make cli utility acts like a script that automatically determines which files of a multi-object program need to be recompiled, then issues commands to recompile them. The official documentation is available from gnu, while a more accessible tutorial is available from Makefile Tutorial.

If you’re using Windows, simply run choco install make from your cli, assuming you’ve already installed Chocolately. Linux and macos users already have make installed.

Fonts (Mac, Windows, and Linux)

In addition to the stock issue, monospace/fixed-width fonts included with your os, here are a few more fonts to explore in your text editors:

IBM Plex | Ubuntu Mono | Fira Mono | Anonymous Pro | Inconsolata

menu_book Textbook

The textbook listed below is the only book used for this course. Ensure all the details match before making your purchase.

Textbook-related Info
Book Cover
Title Java Software Solutions: Foundations of Program Design
Edition 9
Authors John Lewis and William Loftus
isbn-10 0-13-446202-5
isbn-13 978-0-13-446202-8
Publisher Pearson

calendar_month Schedule

Important Notes

In the schedule below, lectures take place on Mondays and labs on Wednesdays, starting in week three. Any changes to this schedule will be announced the week before.

You should get accustomed to using your own laptop for computer science courses. Thus, you will need to bring your own laptops to class. We will use a considerable portion of the first week of classes to install the software you need on your personal machines.

Notable Dates

The weekly schedule for the semester, complete with topics and readings.
Week Topics Homework
One
Aug 26 – 28
  • Thorough syllabus breakdown
  • Software installfest
  • (1.1) Software categories
  • (1.2) Binary numbers; conversions to decimal and back
  • (1.4) Working with comments
  • (1.4) Formatting programs: white space and text alignment
  • (1.6) Object-oriented software principles
  • Git and GitHub fundamentals
  • Git cloning
  • Git committing
Two
Sep 2
  • Git pushing and pulling
  • Git branching
  • Git merging
  • Git forking
  • Git pull requests
  • Difference between forking and cloning
  • Intro to the GitHub Desktop ui
  • Clone the in-class examples repo for the semester
  • Read (27 pages):
    • 1.4: The Java Programming Language, pages 26 – 35
    • 1.5: Program Development, pages 35 – 42
    • 1.6: Object-Oriented Programming, pages 43 – 48
    • 2.1: Character Strings, pages 55 – 61
  • Lab 1
Three
Sep 9 – 11
  • (2.1) Working with strings
  • (2.2) Declaring and working with variables and constants
  • (2.3) Java’s eight primitives, or fundamental, types
  • (2.4) Operators and operands
  • (2.4) Arithmetic expressions
  • (2.4) Operator precedence, or stickiness (pemdas, as it appears from left to right)
  • (2.4) Pre- and post-fix increment/decrement operators
  • (2.4) Assignment and compound operations
  • (2.5) Data conversions/casting
  • Strongly-typed vs loosely- or weakly-typed languages
  • Read (22 pages):
    • 2.2: Variables and Assignment, pages 63 – 68
    • 2.3: Primitive Data Types, pages 69 – 72
    • 2.4: Expressions, pages 73 – 80
    • 2.5: Data Conversion, pages 81 – 84
    • 2.6: Interactive Programs, pages 85 – 89
  • Lab 2
Four
Sep 16 – 18
  • (3.1) Introduction to objects and classes
  • (3.3) Working with packages and import-ing them
  • (3.2, 3.4, 3.5) Working with the String, Math, and Random classes
  • (3.6) The printf method, ported from C
  • (3.7) Enumerations
  • Programming assignment 1 due
  • Read (22 pages):
    • 3.1: Creating Objects, pages 100 – 104
    • 3.2: The String Class, pages 104 – 107
    • 3.3: Packages, pages 108 – 111
    • 3.4: The Random Class, pages 112 – 114
    • 3.5: The Math Class, pages 115 – 118
    • 3.6: Formatting Output, pages 118 – 123
    • 3.7: Enumerated Types, pages 124 – 126
  • Lab 3
Five
Sep 23 – 25
  • (3.8) Wrappers and the primitives they wrap
  • (4.1) Authoring more complex classes
  • (4.3) Encapsulation
  • (4.4) Methods
  • (4.5) Constructors
  • (5.1) Booleans
  • (5.1) Equality and relational operators
  • Read (22 pages):
    • 3.8: Wrapper Classes, pages 127 – 129
    • 3.9: Introduction to Javafx, pages 129 – 133
    • 3.10: Basic Shapes, pages 133 – 139
    • 4.1: Classes and Objects Revisited, pages 148 – 149
    • 4.2: Anatomy of a Class, pages 150 – 156
    • 4.3: Encapsulation, pages 157 – 160
  • Lab 4
Six
Sept 30 – Oct 2
  • (5.1) The not (!) operator
  • (5.1) Truth tables
  • (5.2) The if statement
  • (5.2) if...else statements
  • (5.2) Using braces in your code using block statements
  • An introduction to the seven common structures of computer programming
  • Read (25 pages):
    • 4.4: Anatomy of a Method, pages 160 – 168
    • 4.5: Constructors Revisited, pages 169 – 170
    • 5.1: Boolean Expressions, pages 192 – 196
    • 5.2: The if Statement, pages 197 – 209
  • Lab 5
Seven
Oct 7 – 9
  • (5.4) The while statement
  • (6.1) The switch statement
  • (6.2) The ternary, or conditional, operator
  • (6.3, 6.4) More on loops: for and do...while
  • Programming assignment 2 due
  • Read (29 pages):
    • 5.3: Comparing Data, pages 210 – 213
    • 5.4: The while Statement, pages 214 – 223
    • 5.5: Iterators, pages 225 – 228
    • 5.6: The ArrayList Class, pages 229 – 231
    • 6.1: The Switch Statement, pages 256 – 259
    • 6.2: The Conditional Operator, pages 260 – 261
    • 6.3: The do Statement, pages 261 – 264
    • 6.4: The for Statement, pages 265 – 270
  • Lab 6
Eight
Oct 14 – 16
  • Review for midterm (Monday)
  • Midterm exam (Wednesday)
  • Read (26 pages):
    • 7.1: Software Development Activities, pages 290 – 291
    • 7.2: Identifying Classes and Objects, pages 291 – 293
    • 7.3: Static Class Members, pages 293 – 297
    • 7.4: Class Relationships, pages 298 – 310
    • 7.5: Interfaces, pages 310 – 317
  • Lab 7
Nine
Oct 21 – 23
  • (7.2) Revisiting classes
  • (7.3) static variables and static methods
  • (7.6) More on enumerations
  • (7.8) Overloading methods
  • When learning new languages, ask these questions about any new language
  • Read (29 pages):
    • 7.6: Enumerated Types Revisited, pages 317 – 320
    • 7.7: Method Design, pages 320 – 330
    • 7.8: Method Overloading, pages 331 – 333
    • 7.9: Testing, pages 333 – 336
    • 8.1: Array Elements, pages 356 – 357
    • 8.2: Declaring and Using Arrays, pages 357 – 367
  • Lab 8
Ten
Oct 28 – 30
  • (8.1) Working with arrays
  • (8.3) Arrays of objects
  • (8.6) Multi-dimensional arrays
  • Read (20 pages):
    • 8.3: Arrays of Objects, pages 368 – 378
    • 8.4: Command-Line Arguments, pages 378 – 379
    • 8.5: Variable Length Parameter Lists, pages 380 – 383
    • 8.6: Two-Dimensional Arrays, pages 384 – 389
  • Lab 9
Eleven
Nov 4 – 6

Graphics in Java with JavaFX and Processing

  • (3.9) Introduction to Javafx
  • (3.10) Basic shapes
  • (3.11) Working with color (rgb)
  • (4.6) Working with arcs
  • (4.7) Working with images
  • (4.8) Working with graphical user interfaces, or guis
  • (4.9) Working with text boxes/fields
  • Programming assignment 3 due
  • Read (31 pages):
    • 3.9: Introduction to Javafx, pages 129 – 133
    • 3.10: Basic Shapes, pages 133 – 139
    • 3.11: Representing Colors, pages 140 – 141
    • 4.6: Arcs, pages 170 – 173
    • 4.7: Images, pages 173 – 176
    • 4.8: Graphical User Interfaces, pages 176 – 180
    • 4.9: Text Fields, pages 180 – 183
    • 5.7: Determining Event Sources, pages 232 – 234
    • 5.8: Managing Fonts, pages 234 – 237
  • Lab 10
Twelve
Nov 11 – 13
  • (5.7) Working with event handlers
  • (5.8) Working with typefaces
  • (5.9, 5.10) Working with check boxes and radio buttons
  • (6.5) Working with graphics using loops and conditionals
  • (6.6) Working with transformations
  • Intro to Processing
  • Read (30 pages):
    • 5.9: Check Boxes, pages 237 – 241
    • 5.10: Radio Buttons, pages 241 – 245
    • 6.5: Using Loops and Conditionals with Graphics, pages 271 – 275
    • 6.6: Graphic Transformations, pages 276 – 282
    • 7.10: gui Design, pages 337 – 338
    • 7.11: Mouse Events, pages 338 – 343
    • 7.12: Key Events, pages 343 – 346
Thirteen
Nov 18 – 20
  • (7.10) Designing guis
  • (7.12) Working with keyboard events
  • (8.7) Working with polygons and polylines
  • (8.8) Working with color objects using arrays
  • (8.9) Working with choice boxes
  • Lines, arcs, ellipses, and strokes in Processing
  • Read (10 pages):
    • 8.7: Polygons and Polylines, pages 389 – 392
    • 8.8: An Array of Color Objects, pages 392 – 395
    • 8.9: Choice Boxes, pages 395 – 399
  • Study for final exam
Fourteen
Nov 25 – 27
Thanksgiving recess None
Fifteen
Dec 2 – 4
  • More Processing (Monday)
  • Review for final exam (Wednesday)
  • Evaluations (Wednesday)
  • Programming assignment 4 due
Study for final exam
Sixteen
Dec 9
Final exam None

assignment Assignments

The workload for this course involves four programming assignments. (See the Grading section to learn what percentage of your final grade each is worth.) As noted in the instructions for each assignment, No late work is accepted.

Note: Broken links in the list below will be updated once each assignment is assigned a due date.

countertops Labs

There are 10 labs designed to reinforce the material covered in the lectures. A link to each is provided in the Schedule section of this syllabus. You don’t submit them; None is graded. Labs take place during class time on Wednesdays in the same classroom in which the Monday lectures take place. Lab solutions will be shared — lecture-style — in class the following Monday. Doing well on the labs correlates with how well you’ll do on the assignments and exams. Thus, you’re strongly advised to do each one before Monday’s lecture, so you can compare and learn.

info Grading

Your grade for this course is computed as follows:

  1. Programming assignments (60%)
    • Assignment 1 — 15%
    • Assignment 2 — 15%
    • Assignment 3 — 15%
    • Assignment 4 — 15%
  2. Midterm exam (20%)
  3. Final exam (20%)

To calculate your final grade, convert the percentages listed above and your grades to decimal. For example, 15% becomes .15, 20% becomes .20, etc. Imagine you earned an 80 on the first programming assignment, a 93 on the second, a 60 on the third, a 50 on the fourth, a 95 on your midterm, and, a 100 on the final exam. You’d calculate your final grade as follows:

(.80 × .15) + (.93 × .15) + (.60 × .15) + (.50 × .15) + (.95 × .20) + (1 × .20) = 80%

You can convert your percentage grade to a letter grade at http://vanegas.cs.hartford.edu/grading/.

This grading formula is unbending and will be adhered to strictly.

Note: I do not give grades; students earn them. The grade you earn is based strictly on the outlined formula above.

Important Note

Please do not try to negotiate a grade with me. By asking me to treat you favorably, you’re requesting that I put you above your classmates. Manage your time well; I do not accept late work.

balance Class Policies

psychology No AI Use in Class

The use of generative ai tools is strictly forbidden in this course. All programming assignments — and any labs — associated with this course must be completed without the assistance of ai-generated content. This policy is in place to ensure that the work submitted is authentically yours and reflects your personal understanding and capabilities. Violations of this policy will be considered academic dishonesty and will be subject to disciplinary actions as outlined in the university’s academic honesty policy.

warning Academic Honesty

Cheating of any kind will not be tolerated in this course; make certain that all the work you submit is your own. Refresh your understanding of the college’s policy on academic honesty.

accessible Students with Disabilities

If you have a documented disability for which you are requesting accommodation, you are encouraged to contact Access-Ability Services as soon as possible by calling 860.768.4312, emailing tlopez@hartford.edu, or by stopping by the Access-Ability Services office in Auerbach Hall, Room 209. If your request for accommodations is approved, an accommodation letter will be emailed to your instructor(s) upon your request. Please discuss your accommodations with the instructor as soon as possible to make appropriate arrangements. Note: Student requests for accommodations must be filed each semester. Visit https://www.hartford.edu/academics/academic-support/accessibility-services/ and click the “Registering” link for more info and a link to a video that walks you through the process.

help_center Tutoring

On occasion, this course is assigned a preceptor — a high-achieving computer science student with advanced standing who holds office hours to answer questions about the material. This is in addition to the professor’s office hours. If a preceptor is assigned to this course, they’ll be introduced on the first day of class.

Tutoring — unrelated to a preceptor — is available from the Centralized Tutoring Center. Students can make one-on-one peer tutoring appointments by visiting, emailing, or calling the Center. Students can also book appointments directly in Compass.

LocationHarrison Libraries, lower level, room L102
HoursMonday – Thursday, 10:00 am – 9:00 pm; Fridays, 10:00 am – 6:00 pm; and, Sundays, 12:00 – 9:00 pm
Phone860.768.4131
Emailctctutor@hartford.edu

balance Title IX and Sexual Assault

Sexual violence and other forms of sexual misconduct and harassment, including stalking and intimate partner violence, are prohibited under Title ix, federal and state law, and University of Hartford policy. Information on the University’s policies against sexual violence can be found at https://www.hartford.edu/about/policies/title-ix/. Resources regarding sexual violence can be found at https://www.hartford.edu/about/policies/title-ix/on-off-campus-resources.aspx

Note: University of Hartford faculty, staff, and ras are required to report incidents of sexual misconduct to the Title ix Office (title9@hartford.edu). For further information on The University’s policies and resources, please contact Jason Martinez (860.768.5255; jamartine@hartford.edu) or Justin Bell (860.768.4880; jbell@hartford.edu).

psychology Mental Health and Well-Being

Mental Health is an important aspect of students’ well-being and integral to positive academic experiences and success. If, during the semester, you experience difficulties and would like support, consider contacting the University of Hartford’s caps, or Counseling and Psychological Services, which offers a range of short-term counseling services available to full-time undergraduate students at no additional cost, and to part-time undergraduate and graduate students for a small fee.

caps is located in Gengras Student Union, Room 313 map, and can be reached by calling 860.768.4482 or emailing Liz Inkel at inkel@hartford.edu. Office hours are Monday – Friday, 8:30 AM – 4:30 PM.

info Advice on Succeeding in Class

Read over the following to understand procedures for maximizing your chances of succeeding in class.

door_front Office Hours

I meet students on an appointment basis via video conference during the times listed here. (Click here for videoconferencing details.) Other times on Thursdays and Fridays are available, also. Email vanegas@hartford.edu to make an appointment.

contact_mail Contact

Nowadays, I only use email for emergency situations, such as a pet emergencies, personal tragedies, etc. For matters related to our course, you’re advised to see me before or after class, during my office hours, or by appointment. My contact info is listed in the Preamble.