Programming is all about writing instructions that a computer can understand.
Computational thinking is a problem-solving approach that involves breaking down complex problems into smaller, manageable parts.
Variables are used to store and manipulate data in a program, and they can be thought of as labeled boxes that hold a value.
In programming, data types determine the type of value a variable can hold, such as numbers or text.
Computers execute instructions in a specific order, following a sequence of steps that can be thought of as a recipe.
Course Information
Compsci 101 is a foundational course that covers the basics of computer science.
The course is divided into two semesters, with the first semester focusing on programming fundamentals and data structures.
You'll learn to write code in a variety of programming languages, including Python and Java.
The course also covers the basics of algorithms, which are the step-by-step instructions that a computer follows to solve a problem.
In addition to programming and algorithms, you'll learn about data structures such as arrays and linked lists.
These data structures are used to store and organize data in a way that makes it easy to access and manipulate.
The second semester of the course focuses on more advanced topics, including computer systems and software engineering.
You'll learn about the different components of a computer system, including the hardware and software.
This knowledge will help you understand how computers work and how to design and develop software that is efficient and effective.
Assessments
Assessments in Compsci 101 are a crucial part of your overall grade. You'll be evaluated based on six different types of assessments, which account for a total of 100% of your grade.
The six assessment types are Laboratory, Assignment, Online Test 1, Final exam, Coderunner Timed Exercises, and Online Test 2. Each of these assessments contributes a specific percentage to your overall grade.
Here's a breakdown of the assessment types and their corresponding percentages:
Some assessments are more focused on individual coursework, such as Laboratory, Assignment, and Coderunner Timed Exercises, while others are more focused on individual tests, like Online Test 1 and Online Test 2.
Special Requirements
To pass Compsci 101, you'll need to do more than just show up to class. To pass the course, you must obtain a Final Mark of at least 50% overall.
Both the final written exam and the Practical component are must-passes. You'll need to ace both the invigilated Online Test 1 and Online Test 2.
Special Requirements
To pass the course, students must obtain a Final Mark of at least 50% overall.
Both the final written exam and the invigilated Practical component are required to be passed. The Practical component consists of two Online Tests: Online Test 1 and Online Test 2.
Both Online Tests will be held in the evening, so be sure to plan your schedule accordingly.
Materials Requirements
Materials Requirements are crucial for any project's success.
The type of material needed can vary greatly depending on the project's specific needs. For example, a construction project might require large quantities of cement and steel, while a software development project might require a team of skilled programmers and designers.
In some cases, materials may need to be sourced from specific locations to meet project requirements. This was the case for the construction project in Section 3, where the team had to import specialized equipment from Europe to meet the project's unique needs.
The quantity of materials required can also be a challenge. A project manager's experience in Section 2, where they had to manage a team of over 50 people, highlighted the importance of accurate forecasting and inventory management to avoid delays and cost overruns.
In addition to the type and quantity of materials, the project team must also consider the lead time required to procure and deliver materials. This was a critical factor in the software development project in Section 1, where the team had to meet a tight deadline and source code from multiple vendors.
The cost of materials is another important consideration. A project manager's experience in Section 4, where they had to manage a budget of over $1 million, highlighted the importance of careful planning and cost estimation to avoid financial risks.
Academic Conduct and Engagement
In CS101, academic integrity is taken very seriously, and students are expected to work independently on most assignments, starting from a new blank file each time. This means no sharing of files with others, unless specifically instructed to do so for Participation Projects.
To avoid academic integrity violations, students are discouraged from using others' computers or allowing others to use their own computers. If you don't have a computer, consider using one in the CS101 Learning Center or WVU Libraries, where security protections are in place to prevent unauthorized access to your work.
Here are some key expectations for academic conduct and engagement in CS101:
- Be attentive in class and the CS101 Learning Center.
- Don't use lab computers for non-CS101 work.
- Don't be late or early, and avoid disrupting others.
- Follow email etiquette guidelines, including using a descriptive subject line and your MIX account.
Accessibility Accommodations
If you're a student with a disability and need accommodations to participate in class, advise your instructor and make arrangements with the Office of Accessibility Services at (304) 293-6700.
You can also visit the Division of Diversity, Equity, and Inclusion website for more information on WVU's initiatives.
To receive accommodations for an exam, you must notify your instructor at least one week in advance.
Exams taken in the CS101 Learning Center due to accessibility accommodations must be completed during the same calendar week as the regular exam date, Monday through Friday.
Be sure to allow yourself enough time to complete the exam before the scheduled closing time.
Academic Integrity
Academic integrity is a top priority in any academic institution, and it's essential to understand the expectations and guidelines to avoid any misunderstandings.
The instructor of CS101 enforces rigorous standards of academic integrity in all aspects and assignments of the course, making it clear that academic integrity cannot be sacrificed to expediency, ignorance, or blatant fraud.
Students must work independently on most assignments, with no sharing of files allowed for any reason. This means starting from a new blank file for each assignment unless otherwise instructed.
Sharing of files is only permitted within authorized groups for Participation Projects, but even then, it's essential to follow the instructor's guidelines.
CS101 strongly discourages students from using each other's computers or allowing others to use their own computers to complete their work, as this can lead to academic integrity violations.
If you don't have your own computer, using one in the CS101 Learning Center or WVU Libraries is a great option, as they have security protections in place to prevent one person from accessing another's work.
Attendance and Engagement
Regular attendance is crucial for in-person and synchronous online students to learn the material in CS101. If you miss class, you're responsible for catching up on any work or content.
For in-person and synchronous online students, attendance is tracked by signing in during class. Students must sign in to record attendance.
Asynchronous online students, on the other hand, need to regularly check the course website and email to stay on top of their coursework. This ensures they don't miss any important readings, activities, or assignments.
Regular engagement is just as important as attendance, especially for asynchronous online students. You're responsible for completing all required assignments, including Homeworks, Participation Projects, MyLab Lessons, and Exams.
The workload for CS101 is equivalent to a 4-credit course, which means you'll need to commit time each week to stay on top of your assignments. Be sure to schedule time for CS101 to ensure you complete your work on time.
Expected Conduct
In the classroom or CS101 Learning Center, it's essential to be attentive and avoid using lab computers for non-CS101 work. This helps you stay focused and ensures that the computers are available for course-related activities.
You should not complete assignments unless explicitly allowed by your instructor. This means waiting for permission before starting any work, even if you're eager to get started.
Being on time is crucial, so make sure to arrive on schedule and avoid leaving early. This helps create a productive and respectful environment for everyone.
Disruptive behavior, such as conversing with others or playing music, should be avoided. This includes using your cell phone, chewing gum, or eating in the classroom.
To maintain a quiet and focused atmosphere, please turn off your cell phone or set it to vibrate. This helps prevent interruptions and ensures that everyone can focus on the lesson.
You're responsible for any actions taken in your user account, so be sure to log out of computers when you're finished using them. This prevents unauthorized access and maintains the security of your account.
Here are some key guidelines to keep in mind:
By following these guidelines, you can help create a positive and productive learning environment for yourself and your peers.
Presentation Transcript
Academic conduct is a vital aspect of academic engagement, and it's essential to understand what it entails. Academic conduct refers to the behavior and actions of students in an academic setting, including their interactions with peers, instructors, and course materials.
Plagiarism is a serious offense in academic conduct, and it's crucial to avoid it. According to the university's policy, plagiarism occurs when a student presents someone else's work as their own without proper citation or credit.
Academic integrity is closely tied to academic conduct, and it's essential to uphold it. The university defines academic integrity as "a commitment to honesty, trust, and respect in all academic endeavors."
Students who engage in academic misconduct may face severe consequences, including failure in the course or even expulsion. In extreme cases, students may be required to take a course on academic integrity to understand the importance of academic conduct.
In order to engage in academic conduct, students need to understand the importance of proper citation and referencing. The university recommends using a citation style guide, such as the APA or MLA style, to ensure accurate and consistent citation.
Programming and Software
Programming and software are fundamental aspects of computer science.
To write clean and efficient code, start by developing your skills in programming languages like C and Python.
Learning to code in teams and coordinating on design is crucial for co-creating solutions.
Programming (C, Python)
Programming is a fundamental skill to develop, especially when starting with C, a language that requires attention to detail and a focus on 0s and 1s.
Writing clean and efficient code is crucial, and following best practices is essential to achieve this.
Developing your skills in C lays the foundation for learning other languages, and exploring Python can help you build a strong programming foundation.
Learning how to learn new languages is a valuable skill that will serve you well throughout your programming journey.
Software Design
Software design is all about collaboration. Co-create solutions by coding in teams, coordinating on design, and reviewing each other’s code.
Reviewing each other's code is a crucial step in the design process. It helps catch mistakes and ensure that everyone is on the same page.
Coding in teams can be a fun and rewarding experience. You can learn from each other and bounce ideas off one another.
By coordinating on design, you can create solutions that are cohesive and well-thought-out.
Computational Thinking and Logic
Computational thinking is a fundamental skill for any programmer. It involves breaking down complex problems into manageable parts that a computer can solve.
To develop computational thinking, you need to understand how to analyze and break down problems, as mentioned in the course outcomes. This includes identifying opportunities to automate tasks and solve problems by writing programming code.
Logic and reasoning are also crucial components of computational thinking. You'll explore the rules of programming, including logic gates, recursion, syntax, abstraction, and more. This will help you develop a scientific mindset for solving problems using code.
Here are some key concepts to focus on:
- Recursion: a programming technique where a function calls itself until it reaches a base case
- Logic gates: basic building blocks of digital circuits that use logic to make decisions
- Abstraction: a way of simplifying complex systems by focusing on essential features and behaviors
By mastering these concepts, you'll be well on your way to developing computational thinking skills that will serve you well in your programming journey.
Objectives
After completing a course in Computer Science, you'll be able to identify and appreciate the qualities of high-quality programming code, including good style, clarity, and design quality.
You'll learn to propose improvements to others' code design and clarity in code reviews, and adhere to a style guide. This will help you develop a scientific mindset for solving problems using code.
A scientific approach to designing and choosing algorithms will be taught, along with a methodical, optimistic, persistent, and resilient strategy to debugging, troubleshooting, and solving problems.
You'll be able to cultivate an adversarial attitude toward code execution, and appreciate the importance of writing unit tests.
The course will cover fundamental design principles for writing good software, including function scope and abstraction, recursion, branching, iteration, and working with collections.
You'll understand how computers work in order to predict how programs will be translated into machine code and executed, and be able to differentiate between automata, calculators, and universal computation.
A list of the fundamental design principles for writing good software includes:
- Function scope and abstraction
- Recursion
- Branching
- Iteration
- Working with Collections: Arrays and Lists
- Abstract and Concrete Data Types
- Mutability, direct and indirect addressing
- Structural design of programs
You'll also learn to solve novel problems by building correct and functional software programs, and co-create solutions by coding in teams, coordinating on design, and reviewing each other's code.
The course will help you develop critical thinking skills while programming, including formulating and articulating ideas for solving problems with code, recognizing and testing assumptions, and distinguishing between relevant and irrelevant information.
You'll practice the skills required to independently research and explore new programming concepts, including finding and distinguishing reliable communities of practice and sources of information, and building a habit for experimenting and contributing findings back to a community of practice.
Computational Thinking
Computational thinking is all about breaking down complex problems into manageable bits that a computer can understand. This involves analyzing and identifying the key elements of a problem, much like a puzzle.
To analyze problems, we need to understand how to break them down into smaller, more manageable parts. This is where computational thinking comes in - it's a way of thinking that allows us to identify the key components of a problem and develop a solution.
Computational thinking involves understanding how to identify and appreciate the qualities of high-quality programming code. This includes upholding good style, producing code of good clarity and design quality, and proposing improvements to other's code design and clarity in code reviews.
Here are some key principles of computational thinking:
- Identifying opportunities to automate tasks or solve personal or professional problems by writing programming code
- Exploring creative expression by building programs with a playful or artistic purpose
- Critique personal and professional ethical considerations when writing software
By applying these principles, we can develop a scientific mindset for solving problems using code. This involves following a scientific approach to designing and choosing algorithms, applying a methodical and optimistic approach to debugging and troubleshooting, and producing a strategy for exploring and questioning a problem space.
Automation and Microprocessors
Automation can be a game-changer for repetitive tasks, freeing up time for more creative and high-value work. By understanding the costs and benefits of automation, you can make informed decisions about where to apply it in your projects.
In order to automate tasks, you need to understand how to automate repetitive tasks, which involves breaking down complex processes into smaller, manageable steps. This requires a clear understanding of the tasks involved and the tools and resources needed to complete them.
A computer's ability to interpret instructions is made possible by microprocessors, which are the brain of the computer, executing instructions from modern programming languages.
Automation
Automation can be a game-changer for businesses and individuals alike.
Understanding the costs and benefits of automation is crucial before implementing it.
Automating repetitive tasks can save time and increase productivity, freeing up resources for more strategic tasks.
In the context of microprocessors, automation can also help optimize system performance and reduce errors.
By automating tasks, you can focus on higher-level thinking and creativity, rather than getting bogged down in mundane tasks.
However, automation also requires an initial investment of time and money to set up and implement.
Microprocessors
Microprocessors are the brain of any computer system, responsible for executing instructions from the operating system and applications.
A microprocessor is essentially a small computer on a chip, containing millions of transistors that work together to perform calculations and execute instructions.
This tiny computer can interpret instructions from modern programming languages, making it an essential component of any computer system.
Computers can perform a wide range of tasks, from simple calculations to complex operations, all thanks to the microprocessor's ability to execute instructions efficiently.
The speed and efficiency of a microprocessor are crucial in determining the overall performance of a computer system.
In today's fast-paced digital world, microprocessors are used in a wide range of devices, from smartphones to laptops, and even in some home appliances.
Frequently Asked Questions
Is CompSci 101 hard?
The initial learning curve for CompSci 101 can be steep, but it gets easier with time and practice. Many students find it challenging at first, but with persistence, they can overcome the difficulties and succeed.
Is CompSci math heavy?
Yes, computer science is a math-intensive field, requiring a strong foundation in mathematical concepts and problem-solving skills. If you're interested in pursuing a CompSci degree, be prepared to take several math courses as part of your curriculum.
Featured Images: pexels.com