Search Results for "CSCI 0012"

CSCI 0012. Programming Concepts and Methodology I

Units: 3
Prerequisite: Completion of CSCI 0010 with grade of "C" or better
Hours: 72 (54 lecture, 18 laboratory)
Introduces the discipline of computer science using a high level language utilizing programming and practical hands-on problem solving. (C-ID COMP 122) (CSU, UC)

CSCI 0012 - Programming Concepts and Methodology I

https://catalog.sierracollege.edu/course-outlines/csci-0012/
Catalog Description Prerequisite: Completion of CSCI 0010 with grade of "C" or better Hours: 72 (54 lecture, 18 laboratory) Description: Introduces the discipline of computer science using a high level language utilizing programming and practical hands-on problem solving. (C-ID COMP 122) (CSU, UC) Course Student Learning Outcomes CSLO #1: Demonstrate basic proficiency in the mechanics of the Java programming language. CSLO #2: Apply language fundamentals in support of utilizing and creating Object-Oriented (O-O) software elements. CSLO #3: Originate new Object-Oriented (O-O) software, using language fundamentals and O-O fundamentals, in accordance with sound software development principles. CSLO #4: Apply language fundamentals, O-O fundamentals, and sound program organization techniques, for the purpose of applying them to various realistic, real-world problem solving scenarios. Effective Term Fall 2026 Course Type Credit - Degree-applicable Contact Hours 72 Outside of Class Hours 90 Total Student Learning Hours 162 Course Objectives Lecture Objectives: 1. Analyze and explain the behavior of simple programs involving the fundamental programming constructs. 2. Choose appropriate conditional and iteration constructs for a given programming task. 3. Apply the techniques of structured (functional) decomposition to break a program into smaller pieces. 4. Describe the mechanics of parameter passing. 5. Discuss the importance of algorithms in the problem-solving process. 6. Identify the necessary properties of good algorithms. 7. Create algorithms for solving simple problems. 8. Describe strategies that are useful in debugging. 9. Summarize the evolution of programming languages illustrating how this history has led to the paradigms available today. 10. Identify at least one distinguishing characteristic for each of the programming paradigms. 11. Explain the value of declaration models, especially with respect to programming-in-the-large. 12. Identify and describe the properties of a variable such as its associated address, value, scope, persistence, and size. 13. Discuss type incompatibility. 14. Demonstrate different forms of binding, visibility, scoping, and lifetime management. 15. Defend the importance of types and type-checking in providing abstraction and safety. Laboratory Objectives: 1. Modify and expand short programs that use standard conditional and iterative control structures and functions. 2. Design, implement, test, and debug a program that uses each of the following fundamental programming constructs: basic computation, simple I/O, standard conditional and iterative structures, and the definition of functions. 3. Use a programming language to implement, test, and debug algorithms for solving simple problems. General Education Information Approved College Associate Degree GE Applicability CSU GE Applicability (Recommended-requires CSU approval) Cal-GETC Applicability (Recommended - Requires External Approval) IGETC Applicability (Recommended-requires CSU/UC approval) Articulation Information CSU Transferable UC Transferable Methods of Evaluation Objective Examinations Example: Examination based on solutions to common business software problems, and evaluated for syntax and logic errors, readable, efficient, and maintainable code style, and applying Java Object Oriented Programming concepts (encapsulation, instantiation, inheritance, and polymorphism). Example: What is the difference between static and non static methods? Problem Solving Examinations Example: Example: Write a computer program that plays rock, paper, scissor game. Projects Example: Applying data file handling techniques for processing business data accurately and efficiently using file creation, updating, deleting, and maintenance. Example: Write an object oriented program to play the Tic=Tac-Toe game based on the given requirements. Repeatable No Methods of Instruction Laboratory Lecture/Discussion Distance Learning Lab: Once the material on creating user defined data types has been presented, assess whether the students have learned the material by having them write a simple class definition using the following specifications: The class should be named "Person" and be public. The class has four variables: name (String), age (int), height (int), and eyeColor (String). Write at least two of the getters and two of the setters. Write a public method called "birthday" that increments the age by Write a public method called "toString" that returns a String containing all the attribute of the Person in a human-readable format. Project the "interesting" solutions on the board so that other students may comment, criticize, and/or praise. Lecture: Assume the students have come to class having read the chapter on defining a class. Give a short lecture, supplemented with writing on the board or a slide presentation with handouts, showing the syntax of a Java class. Point out the major sections: class header, class variables, and methods. Discuss the differences between "public" and "private" methods. Discuss conventional "getter" and "setter" methods. Ask the students to answer the questions in the handout related to the lecture. Distance Learning The instructor will present a video lecture on writing classes. After the student views the lecture, they will then be asked to write a class called Circle with the radius as its attribute. The student will be asked to write a method for the class to calculate the area of the circle. Typical Out of Class Assignments Reading Assignments 1. Read & study the examples called Switch1.java and Switch2.java in "Java Programming Examples" and contrast the two versions of the switch statement and be prepared to discuss in class. 2. Read chapter on Classes to contrast classes versus objects. Review the concepts of encapsulation and instantiation. Study the examples of Java code illustrating data-hiding, member data, and methods. Be prepared to discuss in class. Writing, Problem Solving or Performance Laboratory assignment per week solving Business/Industry problems with Java Programming source code. Example 1: Write a program for a money exchange business, prompting for amount of U.S. dollars, asking for a country/currency (e.g. Japanese Yen, European Euro, Mexican Peso, etc.), input a currency exchange rate, calculate the equivalent amount in the new currency, validate input data for accuracy, and display the data on the screen. Apply repetition to loop through many currency conversions. Example 2: Sierra Fencing Company installs new fencing and repairs or replaces old fencing. Write a program that prompts for new or repair fencing, prompts for the cost-per-foot, prompts for fencing length, estimates the total cost, and displays the data on the screen and/or file. Other (Term projects, research papers, portfolios, etc.) Required Materials Building Java Programs: A Back to Basics Approach Author: Stuart Reges, Marty Steep Publisher: Pearson Publication Date: 2019 Text Edition: 5th Classic Textbook?: Yes OER Link: OER: Starting Out with Java Author: Tony Gaddis Publisher: Scott Jones Publication Date: 2019 Text Edition: 7th Classic Textbook?: Yes OER Link: OER: Java - An Introduction to Problem Solving and Programming Author: Walter Savitch Publisher: Pearson/Prentice Hall Publication Date: 2017 Text Edition: 8th Classic Textbook?: Yes OER Link: OER: Java Illuminated Author: Julie Anderson , Hervé J. Franceschi Publisher: ‎ Jones & Bartlett Learning Publication Date: 2022 Text Edition: 6th Classic Textbook?: OER Link: OER: Other materials and-or supplies required of students that contribute to the cost of the course.

CSCI 0026 - Discrete Structures for Computer Science

https://catalog.sierracollege.edu/course-outlines/csci-0026/
Catalog Description Prerequisite: Completion of CSCI 0012 and MATH 0012 with grades of "C" or better Hours: 72 (54 lecture, 18 laboratory) Description: Introduction to the essential discrete structures used in Computer Science, with emphasis on their applications. Includes elementary formal logic and set theory, elementary combinatorics, recursive programming and algorithm analysis, Boolean algebra, digital logic, combinatorial circuits, graph theory, circuit design and minimization, and computer arithmetic. (C-ID COMP 152) (CSU, UC) Course Student Learning Outcomes CSLO #1: Describe how formal tools of symbolic logic are used to model real-life situations, including those arising in computing contexts such as program correctness, database queries, and algorithms. CSLO #2: Relate the ideas of mathematical induction to recursion and recursively defined structures. CSLO #3: Analyze a problem to create relevant recurrence equations. CSLO #4: Demonstrate different traversal methods for trees and graphs. CSLO #5: Apply the binomial theorem to independent events and Bayes’ theorem to dependent events. Effective Term Fall 2026 Course Type Credit - Degree-applicable Contact Hours 72 Outside of Class Hours 90 Total Student Learning Hours 162 Course Objectives Lecture Objectives: 1. Convert between decimal, hexadecimal and binary representation of numbers. 2. Convert negative decimal numbers to two's complement binary form. 3. Analyze sets for complement, union and intersection. 4. Construct Venn diagrams to illustrate set relationships and operations. 5. Evaluate sets for reflexivity, symmetry, and transitivity. 6. Encrypt and decrypt a string of text using the RSA algorithm and modular arithmetic. 7. Identify problems appropriately solved with recursive functions. 8. Convert floating point notation (IEEE-754) to decimal and binary. 9. Recognize digital logic gates and their representation in graphical, algebraic, and truth table form. 10. Convert Boolean functions between algebraic expressions, truth tables and circuit diagrams. 11. Convert an English-language statement of compound propositions (including and, or, not, and quantifiers) to a symbolic form. 12. Identify and solve combinatorial word problems using permutations, combinations, pigeonhole principle, inclusion/exclusion principle, and/or product rule. 13. Compute discrete probabilities of conditional events using Bayes' Theorem. 14. Compare and contrast the "Big-O" running time of common searching and sorting algorithms. 15. Minimize circuits and Boolean expressions by creating Karnaugh Maps. 16. Analyze a graph for the shortest path between two vertices and the minimal spanning tree. 17. Create regular expressions for sets of strings. 18. Create a finite-state automaton from a written description of a set of strings. Laboratory Objectives: 1. Design and construct logic circuits using AND, OR, NOT, NAND, and/or XOR gates from written descriptions. 2. Analyze inputs and outputs for the creation of functions that manipulate numbers, strings, lists, sets, and tuples; 3. Write and test recursive functions on numbers, lists, strings, sets, and tuples; 4. Analyze strings to derive appropriate regular expressions and test them against a corpus of text; 5. Analyze a regular language and construct a regular expression for it; and 6. Write and test functions to encrypt and decrypt strings using shift, linear, and RSA ciphers. General Education Information Approved College Associate Degree GE Applicability CSU GE Applicability (Recommended-requires CSU approval) Cal-GETC Applicability (Recommended - Requires External Approval) IGETC Applicability (Recommended-requires CSU/UC approval) Articulation Information CSU Transferable UC Transferable Methods of Evaluation Classroom Discussions Example: Example: What could be some of the consequences of discovering a fast algorithm for factoring a number into its prime factors? Problem Solving Examinations Example: Example: Compute the 2's Complement form of -29 using an 8-bit representation. Solution: Calculate the binary representation of +29: 00011101 Invert the bits: 11100010 Add 1: 11100011 Projects Example: Derive a regular expression to match ZIP codes (both 5-digit and 9-digit). The student will be provided a text file containing sample data that includes names, addresses, and phone numbers. The regular expression should match and display all the zip codes from the file. The student solution can be checked by comparing the student output to a solution file that the instructor has created. Repeatable No Methods of Instruction Laboratory Lecture/Discussion Distance Learning Lab: Following an instructor lecture and demonstration, students write a computer program to calculate the union and intersection of two sets. The sets can be defined in the program (for example, in Python: A = {3, 9, 5, 1, 2}, B = {1, 2, 3, 4, 5}) and the set operations applied to these sets with the results shown on the screen. Have the students work through problem sets. (Laboratory Objective 3) Following an instructor lecture and demonstration, students use software such as Logisim to construct a half-adder using only NAND gates. Demonstrate on a projector, then have the students do it themselves on a computer. Compare this circuit to one that uses AND, OR, and XOR gates. Verify correct operation using a truth table and compare it to the one that Logisim can automatically generate. (Laboratory Objective 1) Lecture: Instructor lecture and demonstration on how to calculate a minimal spanning tree of a graph with at least 10 nodes and 20 edges. Draw a sample graph on the board (or use a projector) and walk through the algorithm, showing how the minimal spanning tree is derived. Hand out exercise sheets to the students with pre-drawn graphs on them and have the students apply the algorithm to the graphs. Check the graphs for correctness. (Lecture Objective 16) Following an instructor lecture, students using Venn diagrams, calculate the union and intersection of two sets: for example, the set of students with blonde hair and the set of students wearing green shirts. This could be done as a kinesthetic exercise with students standing at the front of the classroom and being grouped according to their characteristics. Show how these groups of students correspond to Venn diagrams. (Lecture Objective 4) Instructor lecture and demonstration on various algorithms for converting decimal numbers to binary and hexadecimal. Solicit suggestions from students for numbers to convert. After demonstrations are complete, students work through exercise sheets. (Lecture Objective 1) Distance Learning The instructor will provide a video lecture and demonstration on sets and relations. Students are then expected to solve problems related to the topic. Typical Out of Class Assignments Reading Assignments 1. Read the section in the textbook on modular arithmetic to learn how to compute the multiplicative inverse. Be prepared to discuss in class. 2. Read the Wikipedia article on the RSA encryption system to learn who invented it, the underlying computations used, and its strengths and weaknesses. Be prepared to discuss in class. Writing, Problem Solving or Performance 1. Using the "repeated division" method, convert the decimal number 29 to binary and hexadecimal. Answer: 29 / 2 = 14 r 1; 14 / 2 = 7 r 0; 7 / 2 = 3 r 1; 3 / 2 = 1 r 1; 1 / 2 = 0 r 1. The solution can be read in the remainders from right to left: 11101. Hexadecimal follows from the binary solution by partitioning into groups of 4 and converting each group to hexadecimal: 1 | 1101 -> 1D 2. Compute at least three strings recognized by this regular expression: b(c|d)*b Sample answers: bb, bcb, bdb, bcccd, bcdcd, bcdcccdb Other (Term projects, research papers, portfolios, etc.) Required Materials Discrete Structures, Logic, and Computability Author: James L. Hein Publisher: Jones & Bartlett Publishers, Inc. Publication Date: 2015 Text Edition: 4th Classic Textbook?: Yes OER Link: OER: Discrete Structures Author: Fell, Harriet, et al Publisher: Cognella Academic Publishing Publication Date: 2016 Text Edition: 1st Classic Textbook?: Yes OER Link: OER: Mathematical Structures for Computer Science Author: Gersting, Judith Publisher: W H Freeman Publication Date: 2014 Text Edition: 7th Classic Textbook?: Yes OER Link: OER: Discrete Mathematics and Its Applications Author: Kenneth Rosen Publisher: McGraw-Hill Education Publication Date: 2018 Text Edition: 8th Classic Textbook?: Yes OER Link: OER: Discrete Structures (Undergraduate Texts in Mathematics) Author: Andreas Klappenecker (Author), Hyunyoung Lee Publisher: Springer Publication Date: 2025 Text Edition: Classic Textbook?: OER Link: OER: Other materials and-or supplies required of students that contribute to the cost of the course.

CSCI 0046 - System Programming with C

https://catalog.sierracollege.edu/course-outlines/csci-0046/
Catalog Description Prerequisite: Completion of CSCI 0012 with grade of "C" or better Advisory: Completion of CSCI 0050 with grade of "C" or better Hours: 72 (54 lecture, 18 laboratory) Description: Introduction to the C language and system programming on a Unix-like operating system. Topics include the standard C library, memory allocation, file I/O, permissions, system calls, networking, and process management. Development in a Unix environment will cover editors, shell scripting, makefiles, source code control, and debugging. (CSU, UC) Course Student Learning Outcomes CSLO #1: Use the standard C libraries for input/output, memory management, and networking. CSLO #2: Construct multi-file programs using appropriate software engineering tools. CSLO #3: Construct programs utilizing arrays, structures, loops, and/or subroutines. CSLO #4: Debug and add features to existing programs. Effective Term Fall 2026 Course Type Credit - Degree-applicable Contact Hours 72 Outside of Class Hours 90 Total Student Learning Hours 162 Course Objectives Lecture Objectives: 1. Identify the phases of compiling a C program. 2. Interpret a written program specification and decompose it into psuedocode. 3. Analyze the dependency graph for building a multi-file project. Construct a Makefile to automate the build process. 4. Describe the primitive C data types. 5. Interpret documentation of library functions and use the functions in working programs. Laboratory Objectives: Interpret written program specifications and write C programs conforming to the ANSI standard incorporating the following language and library features: 1. Standard I/O using printf, scanf, fputs, and fgets; 2. String manipulation using strcmp, arrays, and pointer arithmetic; 3. Structs and unions; 4. Multiple source and header files; 5. Stream-based and record-based file I/O; 6. Dynamic memory management; 7. Process management system calls including fork, exec, and wait, and their variants; 8. Command-line arguments; 9. Control structures: if/else, while, do/while, for; 10. Functions that accept and return primitive types, arrays, and structs; 11. Standard mathematical functions from the libm library; 12. Client socket programming; 13. Recursive functions. 14. Writing makefiles to automate the compilation process; 15. Coordinating development among two or more persons using a version control system; 16. Compiling and linking programs requiring multiple source files. General Education Information Approved College Associate Degree GE Applicability CSU GE Applicability (Recommended-requires CSU approval) Cal-GETC Applicability (Recommended - Requires External Approval) IGETC Applicability (Recommended-requires CSU/UC approval) Articulation Information CSU Transferable UC Transferable Methods of Evaluation Classroom Discussions Example: Why is fgets preferred over gets? Answer: The gets function doesn't do bounds-checking on the string array. It is possible to overrun the array by simply inputting more characters than the array allows for. The fgets functions, by contrast, is passed the length of the array and will not accept more characters than the given limit. Buffer overruns and a myriad of security vulnerabilities can be prevented by using fgets instead of gets. Objective Examinations Example: Sample test question: The following statements are executed: int x, y; x = 5; y = 8; y = ++x * y; What are the values of x and y? Answer: x = 6, y = 40 Problem Solving Examinations Example: Sample assignment: Write a recursive function to implement the quicksort algorithm. Write a driver program to accept a list of numbers from the user, sort them, and display the results to standard output. Test your function on integer arrays of size zero, one, two, and ten, and sixteen. Rubric: - Does the program accept numeric input and display correct results? - Is the function recursive? - Does the function work on inputs of size zero, one, two, ten, and sixteen? - Does the function choose a suitable pivot element? - Is the relative ordering of elements retained as they are copied around the pivot? - Is the program well-documented? - Does the program include a Makefile? - Does the program compile without warnings or errors? Projects Example: Sample assignment: Write a recursive function to implement the quicksort algorithm. Write a driver program to accept a list of numbers from the user, sort them, and display the results to standard output. Test your function on integer arrays of size zero, one, two, and ten, and sixteen. Rubric: - Does the program accept numeric input and display correct results? - Is the function recursive? - Does the function work on inputs of size zero, one, two, ten, and sixteen? - Does the function choose a suitable pivot element? - Is the relative ordering of elements retained as they are copied around the pivot? - Is the program well-documented? - Does the program include a Makefile? - Does the program compile without warnings or errors? Repeatable No Methods of Instruction Laboratory Lecture/Discussion Distance Learning Lab: Following an instructor discussion on Makefile, the students will construct a Makefile for their own assignments. Lecture: Building a multi-file project is a complex process. The instructor will lecture and present a project consisting of at least three C files, three headers files, and a library (such as libm). The project can be built "by hand" using four compilation and link commands. From this information, a dependency graph can be illustrated. This dependency graph forms the basis of constructing a Makefile -- a file that describes the sequence of events needed to build a project and automatically re-build only the affected files when changes are made. The instructor will walk the students through writing and testing a Makefile for the example project. Distance Learning In the distance learning format, the instructor prepares a video demonstration using screencasting software of writing a C program that uses the printf and scanf functions to get input from the user, do a calculation, and present the results. Students watch this video to prepare for the week's lab assignment. Example: the student writes a program to calculate the area of a circle given the diameter. Typical Out of Class Assignments Reading Assignments 1. Read the textbook chapter about the primitive data types. Pay attention to how each has a different formatting code in the printf function. Be prepared to discuss in class. 2. Read the description of the programming assignment for this week. Prepare to discuss in class how to decompose the problem into functions and what variables will be needed. Writing, Problem Solving or Performance 1. Write a recursive function to implement the quicksort algorithm. Test your function on integer arrays of size zero, one, two, and ten, and sixteen. 2. Compare and contrast the Java and C programming languages in the following areas: performance, memory usage, portability, ease of readability. Other (Term projects, research papers, portfolios, etc.) Numerous hands-on programming assignments. Required Materials C for Programmers with an Introduction to C11 Author: Deitel, Paul and Harvey Deitel Publisher: Deitel Developer Series Publication Date: 2013 Text Edition: 1st Classic Textbook?: Yes OER Link: OER: Understanding and Using C Pointers Author: Reese, Richard Publisher: O'Reilley Publication Date: 2013 Text Edition: 1st Classic Textbook?: Yes OER Link: OER: Practical System Programming with C: Pragmatic Example Applications in Linux and Unix-Based Operating Systems Author: Sri Manikanta Palakollu Publisher: Apress Publication Date: 2020 Text Edition: 1st Classic Textbook?: Yes OER Link: OER: Effective C, An Introduction to Professional C Programming Author: Robert C. Seacord Publisher: No Starch Press®, Inc Publication Date: September 2024, Text Edition: 2nd Classic Textbook?: No OER Link: OER: Other materials and-or supplies required of students that contribute to the cost of the course.

CSCI 0066 - Object-Oriented Programming Using C++

https://catalog.sierracollege.edu/course-outlines/csci-0066/
Catalog Description Prerequisite: Completion of CSCI 0012 with grade of "C" or better Advisory: Completion of CSCI 0046 with grade of "C" or better Hours: 72 (54 lecture, 18 laboratory) Description: An introduction to the concepts of object-oriented programming and the application of the C++ language. Extensive programming practice using C++ as the vehicle toward modular, reusable object-oriented code. (CSU, UC) Course Student Learning Outcomes CSLO #1: Apply C++ concepts including structures, classes, methods, objects, and primitive types, referencing basic C++ libraries. CSLO #2: Use the object-oriented language concepts available in C++ to demonstrate encapsulation, abstraction, instantiation, overloading, inheritance, composition, and polymorphism. CSLO #3: Apply the object-oriented language concepts available in C++ to design and implement a program that applies to a real-world application. Effective Term Fall 2026 Course Type Credit - Degree-applicable Contact Hours 72 Outside of Class Hours 90 Total Student Learning Hours 162 Course Objectives Lecture Objectives: 1. Describe the principles and advantages of object-oriented programming. 2. Analyze a problem statement and construct appropriate classes to model the problem. 3. Describe the differences between the public, private, protected, and friend access permissions. 4. Design programs that take advantage of the modularity of object-oriented programs. 5. Evaluate and modify programs using C++. 6. Use object-oriented language concepts in software development projects including encapsulation, abstraction, instantiation, overloading, inheritance, composition, and polymorphism. 7. Incorporate file-handling techniques for data input, output, and updating using C++ methods for text and random access file organization. Laboratory Objectives: 1. Write correct C++ programs that utilize sequencing, conditionals, and loops. 2. Write correct C++ programs consisting of at least two classes. 3. Write correct C++ programs utilizing file I/O to read and write text files. 4. Write correct C++ programs utilizing arrays of primitive types and arrays of objects. 5. Write program documentation conforming to acceptable industry practices. General Education Information Approved College Associate Degree GE Applicability CSU GE Applicability (Recommended-requires CSU approval) Cal-GETC Applicability (Recommended - Requires External Approval) IGETC Applicability (Recommended-requires CSU/UC approval) Articulation Information CSU Transferable UC Transferable Methods of Evaluation Objective Examinations Example: Multiple-choice exam question: Which of the following will increment the x variable by 1? a. x++ b. ++x c. x += 1 d. x = x + 1 e. All of the above Answer: e Problem Solving Examinations Example: Design and implement a C++ class to represent the main character in a "Flappy Birds" style of video game. The class should have the following methods: void flap(); int getHeight(); boolean isCrashed(); void glide(); Projects Example: Write a program to keep track of the list of the patients for each doctor at a hospital. implement the following classes: Person, Patient, Doctor, kake sure to use the has-1 and is-a relationship. Create a list of the doctors along with the list of the patients for each doctor. Start your project by creating a UML diagram for your classes. In your UML include all the methods that is needed. Repeatable No Methods of Instruction Laboratory Lecture/Discussion Distance Learning Lab: Following an instructor discussion on C++ program, students read a written specification for a C++ program. In the hour-long lab session, students write and debug the program which includes conditional statement and classes.. The instructor circulates among the students, offering assistance and Socratically questioning student design choices. Lecture: Students have read the chapter about polymorphism before class. The instructor presents several examples of polymorphic data types. Students and instructor debate the implementation strategies, focusing on design tradeoffs. Distance Learning Students have read the chapter about polymorphism before class. In a video lecture the instructor presents several examples of polymorphic data types. instructor explains the implementation strategies, focusing on design.The instructor posts a quiz on the topic covered. The quiz relates to the reading material and the lecture and helps identify potential trouble areas in student understanding. Typical Out of Class Assignments Reading Assignments 1. Read the textbook section on "compound data types" to learn about the differences between pointers and references. Be prepared to discuss it during the lecture. 2. Locate and read online documentation for the Clang compiler. From this to determine how to invoke the compiler so that "loop unrolling" optimization is performed. Be prepared to discuss in class. Writing, Problem Solving or Performance 1. Using a Car Rental business as a guide, create a class called "Invoice" with 6 private data members: invoice number, days rented, insurance amount, rental rate, total fee, total charge. Create 3 member functions: Getdata(), Calcfee(), and ShowInvoice(). Instantiate the object in main() and call the member functions. 2. Create an overloaded minus sign "-" operator to handle a discount coupon. Prompt if there is a coupon, and the percentage discount. Use you overloaded minus operator to recalculate the customer fees. Other (Term projects, research papers, portfolios, etc.) Required Materials The C++ Programming Language Author: Stroustrup, Bjarne Publisher: Addison Wesley Publication Date: 2013 Text Edition: 4th Classic Textbook?: Yes OER Link: OER: C++ Primer Author: Lippman, Stanley, et al Publisher: Addison Wesley Publication Date: 2012 Text Edition: 5th Classic Textbook?: Yes OER Link: OER: The C++ Standard Library Author: Josuttis, Nicolai Publisher: Addison Wesley Publication Date: 2012 Text Edition: 2nd Classic Textbook?: Yes OER Link: OER: Murach's C++ programming Author: Joel Murach Publisher: Mike Murach and Associates Publication Date: 2018 Text Edition: 1st Classic Textbook?: Yes OER Link: OER: Programming: Principles and Practice Using C++ Author: Bjarne Stroustrup (Author) Publisher: Addison-Wesley Professional Publication Date: 2024 Text Edition: 3rd Classic Textbook?: OER Link: OER: Other materials and-or supplies required of students that contribute to the cost of the course.

CSCI 0013 - Programming Concepts and Methodology II

https://catalog.sierracollege.edu/course-outlines/csci-0013/
Catalog Description Prerequisite: Completion of CSCI 0012 with grade of "C" or better Hours: 72 (54 lecture, 18 laboratory) Description: Application of software engineering techniques to the design and development of large programs; data abstraction and structures and associated algorithms. (C-ID COMP 132) (CSU, UC) Course Student Learning Outcomes CSLO #1: Implement linear lists with arrays and linked objects. CSLO #2: Write programs that use the stack and queue data structures, based on provided specifications. CSLO #3: Produce intermediate-sized programs using Object-Oriented design principles, with a combination of written and provided code. CSLO #4: Identify effective techniques to test, debug, and document larger programs. CSLO #5: Write a program that uses recursive algorithms operating on a binary tree. Effective Term Fall 2026 Course Type Credit - Degree-applicable Contact Hours 72 Outside of Class Hours 90 Total Student Learning Hours 162 Course Objectives Lecture Objectives: 1. Discuss the representation and use of primitive data types and built-in data structures. 2. Describe how the data structures are allocated and used in memory. 3. Describe common applications for each data structure. 4. Compare alternative implementations of data structures with respect to performance. 5. Compare and contrast the costs and benefits of dynamic and static data structure implementations. 6. Choose the appropriate data structure for modeling a given problem. 7. Describe the concept of recursion and give examples of its use. 8. Identify the base case and the general case of a recursively defined problem. 9. Compare iterative and recursive solutions for elementary problems such as factorial. 10. Describe the divide-and-conquer approach. 11. Describe how recursion can be implemented using a stack. 12. Discuss problems for which backtracking is an appropriate solution. 13. Determine when a recursive solution is appropriate for a problem. 14. Explain the value of declaration models, especially with respect to programming-in the-large. 15. Identify and describe the properties of a variable such as its associated address, value, scope, persistence, and size. 16. Discuss type incompatibility. 17. Defend the importance of types and type-checking in providing abstraction and safety. 18. Evaluate trade-offs in lifetime management (reference counting vs. garbage collection). 19. Explain how abstraction mechanisms support the creation of reusable software components. 20. Defend the importance of abstractions, especially with respect to programming-in-the-large. 21. Describe how the computer system uses activation records to manage program modules and their data. 22. Justify the philosophy of object-oriented design and the concepts of encapsulation, abstraction, inheritance, and polymorphism. 23. Describe how the class mechanism supports encapsulation and information hiding. 24. Compare and contrast the notions of overloading and overriding methods in an object-oriented language. 25. Explain the relationship between the static structure of the class and the dynamic structure of the instances of the class. 26. Describe how iterators access the elements of a container. 27. Discuss the properties of good software design. 28. Compare and contrast object-oriented analysis and design with structured analysis and design. Laboratory Objectives: 1. Implement the user-defined data structures in a high-level language. 2. Write programs that use each of the following data structures: arrays, records, strings, linked lists, stacks, queues, and hash tables. 3. Implement, test, and debug simple recursive functions and procedures. 4. Demonstrate different forms of binding, visibility, scoping, and lifetime management. 5. Demonstrate the difference between call-by-value and call-by-reference parameter passing. 6. Design, implement, test, and debug simple programs in an object-oriented programming language. 7. Design, implement, and test the implementation of "is-a" relationships among objects using a class hierarchy and inheritance. General Education Information Approved College Associate Degree GE Applicability CSU GE Applicability (Recommended-requires CSU approval) Cal-GETC Applicability (Recommended - Requires External Approval) IGETC Applicability (Recommended-requires CSU/UC approval) Articulation Information CSU Transferable UC Transferable Methods of Evaluation Objective Examinations Example: Multiple choice and short answer questions such as: 1. Which of the following is not a valid Java identifier? a) pressureA b) ppO2 c) 4counter d) all of the above are valid Java identifiers Answer: c Identifiers must begin with an upper or lowercase letter. Problem Solving Examinations Example: 1. Write a static method that computes the arithmetic mean of a list of numbers. Your methods should accept the list of numbers as a parameter. Answer: public static double mean(double[] x) { double average=0; //sum the values in the list for(int i=0; i average=average+x[i]; return average/x.length; } 2. Laboratory assignments covering computer science principles and applications such as: 1. Implement the infix to postfix conversion program discussed in class. Your solution should make use of a reference-based stack. Your program should also check the validity of the input stream. Projects Example: Create a program that simulates the flight of a model rocket. Your program should allow the user to specify the mass of the rocket, total impulse of the motor, and burn time of the motor. Your simulation should use the formulas discussed in class. For the simulation output, create a chart that shows the altitude of the rocket each 10th of a second. Repeatable No Methods of Instruction Laboratory Lecture/Discussion Distance Learning Lab: Prior to the lab, ask the class to read the data structures chapter and pay close attention to the design and implementation of the queue. Instructor initiate the discuss for the following: How would you use the queue to simulate waiting in line for a ride at an amusement park? Students will be asked to create a Java program for this simulation. Lecture: Assume students have read the chapter on data structures. Instructor gives a 20 to 30 minute lecture discussing the array implementation of the stack. Make use of the whiteboard and a handout about the stack during the lecture. Discuss postfix notation and how a stack is used to process a postfix expression. Ask the students to develop pseudocode for processing a postfix expression using a stack. Ask three students to put their solution on whiteboard. Discuss each solution with class. Discuss optimal pseudocode using presentation software. Distance Learning The instructor will present a video lecture on inheritance. After the student views the lecture, they will then be asked to write the GeometricObject class, Circle class and rectangle class using the inheritance. Typical Out of Class Assignments Reading Assignments 1. Read and study the chapter on fundamental data structures. Focus your reading on the stack and queue. Be prepared to compare and contrast these two structures and their various implementations in class. 2.Read and study the handout on overloading and overriding. Compare and contrast the notions of overloading and overriding methods in an object-oriented language and be prepared to discuss in class. Writing, Problem Solving or Performance Typical early lab assignment: Goals: Cutting a string into pieces.Counting words. Description Write two separate Java programs for cutting a string (sentence) into individual tokens (words). Part 1 Write a Java program that uses the StringTokenizer class (in java.util) to break a string into tokens. Your program should print each word from the string on a separate line. In addition, your program should print the number of tokens found in the string. You may assume the tokens in the string are separated by one or more spaces and the string is terminated with a period. This first program may be written entirely in a main method. Please use the string under test data to test your program. Part 2 Your second program should also slice a string into tokens, but without the aid of the StringTokenizer class. Using the charAt( ) method, and the string length constant, to tokenize the test data string. Add each token from the string into an ArrayList object (see the Java API under java.util). Your program can simply add each token to the ArrayList as the tokens are discovered. Other (Term projects, research papers, portfolios, etc.) Required Materials Introduction to Java Programming Author: Y. Daniel Liang Publisher: Pearson Education Publication Date: 2014 Text Edition: 10th Classic Textbook?: Yes OER Link: OER: Starting out with Java Author: Tony Gaddis Publisher: Pearson Publication Date: 2017 Text Edition: 6th Classic Textbook?: Yes OER Link: OER: Java Illuminated Author: Julie Anderson and Hervé J. Franceschi Publisher: Jones & Bartlett Learning Publication Date: 2022 Text Edition: 6th Classic Textbook?: OER Link: OER: Other materials and-or supplies required of students that contribute to the cost of the course.

CSCI 0010 - Introduction to Computing

https://catalog.sierracollege.edu/course-outlines/csci-0010/
Catalog Description Advisory: Completion of MATH 0012 with grade of "C" or better Hours: 72 (54 lecture, 18 laboratory) Description: Survey of computer science technologies and methods. Introduction to computer hardware and software, structured programming, operating system concepts, communications and social impacts of computer technology. Explore current and emerging topics such as robotics, computer security and artificial intelligence. (CSU, UC) Course Student Learning Outcomes CSLO #1: Describe the software development life-cycle. CSLO #2: Describe the principles of structured programming and be able to describe, design, implement, and test structured programs using currently accepted methodology. CSLO #3: Explain what an algorithm is and its importance in computer programming. CSLO #4: Explain moral and ethical issues in computer science. Effective Term Fall 2026 Course Type Credit - Degree-applicable Contact Hours 72 Outside of Class Hours 90 Total Student Learning Hours 162 Course Objectives Lecture Objectives: 1. Identify at least three places computers can be found in our society, other than personal computers. 2. Compare and contrast data input and storage mechanisms from previous generations of computers to those in current use. 3. Compare and contrast the specifications of at least two commercially-available computer systems and associated common peripherals. 4. Describe the binary and hexadecimal counting systems. 5. Solve mathematical problems that are expressed in the decimal, binary, and hexadecimal counting systems. 6. Describe the relationship between bits and bytes. 7. Identify and describe the function of major computer components in a von Neumann architecture: CPU, CU, ALU, Bus, Disk Drive, RAM, ROM, Clock, and Input/Output Peripherals. 8. Identify the major components of mass storage devices (platters, read/write heads, recording surface, interface) and describe the logical layout of data (tracks, sectors, blocks, cylinders). 9. Describe the use of "abstraction" and "layering" in operating systems and networking. 10. Describe the purpose of disk-based virtual memory (swap) and the process by which swap space is used to alleviate shortages of RAM. 11. Identify the major components of modern graphical user interfaces: buttons, scrollbars, menus, windows, dialogs, input fields, text, images, cursor, click, drag. 12. Define and describe the networking terms: protocol, host, client, server, IP Address, TCP, LAN, router, checksum. Identify examples of each. 13. Apply current computer science theories, models, and techniques that provide a basis for problem identification and analysis, software design, development, implementation, verification, and documentation. 14. Distinguish the tradeoffs computer scientists must balance in software and hardware design in terms of cost, speed, and resource limitations. 15. Compare the relative efficiencies of at least two of the following algorithms: binary search, linear search, bubble sort, insertion sort, quicksort, find min/max. Laboratory Objectives: 1. Design, write, and run without errors a simple computer program utilizing variables, conditionals, and loops using a current programming language. 2. Prepare at least two simple web pages in HTML utilizing basic formatting tags, lists, images, colors, and links. View the web pages in a web browser. 3. Write, print, and save a document using a word processor. 4. Use a spreadsheet or database to define data fields, input data, express mathematical calculations that manipulate the data, and save the data. General Education Information Approved College Associate Degree GE Applicability AA/AS - Comm & Analyt Thinking CSU GE Applicability (Recommended-requires CSU approval) Cal-GETC Applicability (Recommended - Requires External Approval) IGETC Applicability (Recommended-requires CSU/UC approval) Articulation Information CSU Transferable UC Transferable Methods of Evaluation Objective Examinations Example: Objective Examinations: 1. Q: Turnstiles often contain an odometer-like device that counts the number of persons who have passed through. Argue whether the counter is an analog or digital device. A: There is no correct answer. It can be argued that because the turnstile can only measure "whole" persons, it is a digital device. On the other hand, because the counter is a mechanical device whose dials must physically turn from one count to the next, it could be an analog device. 2. Q: All modern computers work with a system of numbers called ________ ______________. a) Octal numbering system b) Decimal numbering system c) Binary numbering system A: c 3. The use of binary circuitry corresponds to: a) the use of a rotary dial on a telephone b) making use of fingers and toes to count c) the OFF and ON states of a light bulb d) the use of a voice activated answering device A: c Problem Solving Examinations Example: 1. Design a small web site about your family. The web site should contain at least three pages: a top "home" page listing all the members of your family and two or more pages, one for each member of your family. The home page should be hyperlinked to each of the family member pages and vice-versa. Each family member page should contain the following information: * His or her name * A brief description of that person * A list of hobbies * A picture of the person or of one of their hobbies The web pages should make use of a variety of HTML tags, including headings, bold, italics, horizontal rules, centering, images, and colors. Upload your web site to a web server and view it in a browser. Solution: The web pages need to include at least the minimum required tags. It should load correctly in a web browser. Each of the pages should be linked to each other as described. Skill Demonstrations Example: After doing the laboratory assignment about machine code and parts of the CPU, explain how a computer virus or worm can infect your computer without your knowledge by overwriting the contents of the PC (Program Counter) register. Solution: Because the PC register contains the address of the next instruction to be executed, a virus (or any other malicious program) can cause the computer to execute arbitrary instructions by replacing the contents of register with the address of one of its own instructions. The computer doesn't "know" it is about to execute unwanted instructions. To the computer, this is perfectly normal behavior. Often, the overwriting of the PC register is accomplished with a programming technique called "buffer overruns." Repeatable No Methods of Instruction Laboratory Lecture/Discussion Distance Learning Lab: Design, write and run a program to play the rock, paper, scissor game. Declare variables and use conditional statements and loops. Laboratory Objective one Lecture: We help the students learn about and visualize various sorting algorithms by using playing cards. Prior to class, the students have read about the bubble and quicksort algorithms. Each student is given a deck of cards to shuffle. Students are then asked to apply the bubble sort algorithm to the shuffled deck. The students should keep a count of the number of iterations. The student shuffles the cards again and applies the quicksort algorithm, also counting the number of iterations. The students then analyze their results to determine which algorithm is faster. We further analyze the algorithms by formulating scenarios in which either algorithm works at its fastest and its slowest running times. Throughout the activity the instructor facilitates the activity. Distance Learning The instructor will present a video lecture explaining the Bubble sort algorithm through multiple examples. Students will be given an unsorted list integer values to sort using the discussed Bubble sort algorithm. Typical Out of Class Assignments Reading Assignments 1. Read the chapter on the history of computing and be prepared to discuss in class. 2. Read the website entitled "Beginner's Guide to HTML." Work through the examples shown by typing them into a text file editor, saving them, and viewing them in a web browser and be prepared to discuss in class. Writing, Problem Solving or Performance 1. Robots are becoming increasingly useful in our society. For example, one can buy a small robot to automatically vacuum a house. We can explore some of the technologies that make this possible using simple robot construction techniques. Design and write a program in Java or RCX to instruct a robot outfitted with individually powered wheels and light and touch sensors to wander around the floor, automatically avoiding obstacles. The robot should not go over any path more than once. The program is finished when the robot finds the black circle located in an arbitrary place. 2. Write a two-page essay describing your personal experiences with malware. Conclude your paper by describing at least two things you can do to remove malware from your computer and/or prevent it in the future. 3. Write a two-page paper tracing the evolution of input devices (punched cards, magnetic tape, disk drives), focusing on how the devices of yesterday have influenced the devices of today. Other (Term projects, research papers, portfolios, etc.) Required Materials Computer Science, An Overview Author: Brookshear, Glenn Publisher: Pearson Publication Date: 2021 Text Edition: 13th Classic Textbook?: Yes OER Link: OER: Computer Science: An Interdisciplinary Approach Author: Robert Sedgewick, Kevin Wayne Publisher: Addison-Wesley Professional Publication Date: 2016 Text Edition: 1st Classic Textbook?: Yes OER Link: OER: Computer Science Illuminated Author: Dale & Lewis Publisher: Jones & Bartlett Publishers Publication Date: 2019 Text Edition: 7th Classic Textbook?: Yes OER Link: OER: Other materials and-or supplies required of students that contribute to the cost of the course.