Course Overview

TThe computer’s role in culture has expanded from a calculating machine used by governments to the iPod as a fashion accessory, the Smart Phone as a companion, and the Internet as a medium of self-expression. In the 1950s, the idea of dedicating a computer to entertainment was unthinkable; today revenues from the computer game industry exceed Hollywood. More humans own a computer than own a toothbrush and Apple is the world’s largest company having overtaken Oil, Agriculture and Manufacturing.

We inhabit a century where every job will be technical. In the 21st century, learning to program a computer is empowerment. From "if" conditionals to "for" loops, knowing the basics of programming allows you to understand the way the modern world works. Programming instruction teaches procedural and functional thinking, project management and time management, skills that are essential components of an empowered individual. Programming is the power to create, the power to change and the power to influence. Today’s students regardless of their ultimate field of study or occupation need this fundamental knowledge.

Programming teaches logic, algorithmic thinking, and an iterative approach to solving problems and testing your ideas. These skills make you smarter and are useful no matter what you do. Learning to program can be incredibly rewarding, give you a new appreciation for technology and introduce countless career opportunities.

Catalog Description

Using computation to enhance problem solving abilities; understanding how people communicate with computers, and how computing affects society; computational thinking; software design principles, including algorithm design, data representation, abstraction, modularity, structured and object oriented programming, documentation, testing, portability, and maintenance; understanding programs’ abilities and limitations; development and execution of programs.

Weekly Topics

Some of the topics to be covered in lecture periods are:

  • Formal and natural languages, black box modeling.
  • Variables, assignment, printing, mental models for computers .
  • Operators, math, random numbers, algorithms.
  • Conditionals, if statements. switch statements, trees, composing conditionals.
  • Looping, while do loops, do while loops, flow charts.
  • Arrays and Lists.
  • Combining branching looping and I/O
  • Functions and Classes
  • Code refactoring, Java Libraries, Objects, Exceptions
  • File I/O, for loops
  • Graphical user interface
  • Object Creation and Design

Learning Outcomes

Students completing this course should be able to:

  • Use a text editor to program Java code.
  • Use a Java compiler to produce executable software.
  • Identify the basic syntax and semantics of the Java programming language.
  • Use appropriate commenting, layout, and naming to communicate code intent
  • Understand the primitive data types built into the Java language.
  • Understand the concepts of Java classes and objects.
  • Understand the difference between variables of primitive types and variables of class types.
  • Understand the concepts of lifetime, scope and the initialization mechanism of variables.
  • Implement Java code branching using if statements.
  • Program loops with while, for and do statements.
  • Identify and correct syntax and logic errors in short Java programs.
  • Assemble data and methods into classes following the software engineering principles of encapsulation and data hiding.
  • Organize Java code following the software engineering principles of modularity and abstraction.
  • Create Java I/O interfaces
  • Make use of arrays to store and process lists of data.
  • Read, interpret, analyze, and explain introductory Java programs.
  • Test and evaluate introductory Java programs.

Grading

Grading will come from the four components of the class:

Attendance and Participation:

Attendance counts for 10% of your grade. Historically in my classes, those students who get full credit for attendance make the highest grades. Those who get less than full credit, down to zero credit, do not make the highest grades.

From Rule 7 of the Student Rules:

Students taking traditional face-to-face courses are expected to attend class and to complete all assignments by stated due dates.

On a scale of 100, attendance is worth 10 points. In order to receive any attendance credit, you must earn at least 6 of the 10 points. Less than 6 points will result in 0 points for attendance. Points are earned on a per week basis. There are 15 weeks in this semester. The first week attendance will not be taken for credit as there are no labs and add/drops are still possible. Attendance will be taken to resolve problems or issues with registered students and to support financial aid requirements. This leaves 14 weeks, with 2 of the 14 weeks being half weeks (Thanksgiving and finals week.) The 2 half weeks will be combined into one week. This, then adds up to 13 weeks of being able to earn an attendance point. If you earn more than 10 attendance points, those extra points will help your grade in other areas.

To earn a point, you must attend both lectures and both labs associated with that week and complete any in class activities associated with that day.

Quizzes and zyBooks:

Weekly Quizzes account for 10% of your grade.

Weekly zyBooks assingments account for 10% of your grade.

Assignments:

Weekly coding assingments account for 40% of your grade. More complicated assignments towards the end of the semester are weighted heavier than earlier ones.

Projects:

Projects account for 30% of your grade. There will be two projects with each project having multiple deliverables.

The grading scale expected to be used is:

A >= 90% > B >= 80% > C >= 65% > D >= 50% > F

In addition to this, the instructor reserves the right to provide a relative or absolute curve to the final class grade (note that such a curve has not always been applied, and should not be assumed). Also, the instructor may raise the grades of any students very near a borderline based on a subjective evaluation of class participation and effort.

Required Textbook

zyBooks Java Textbook is required for this class. To subscribe:

  • Sign in or create an account at learn.zybooks.com
  • Enter zyBook code: TAMUCSCE111LightfootFall2019
  • Subscribe

If you are a Computer Science Major or Minor or would like a good refrence book, the following link is the recommended book for this class.

Starting Out wiht Java: From Control Structures through Objects, 7th Edition

The nature of this class is that no single textbook will cover all of the material needed in the course. There are a wide variety of introduction computer science topics, and we might draw material from or reference several of them during the course of the class. References to these other books will be provided when possible, but some material might be provided only in class lectures.