We may earn an affiliate commission when you visit our partners.
Course image
Osamu Watanabe

Do you want to learn more about data and gain programming experience? If yes, this is the right course for you to start!

Read more

Do you want to learn more about data and gain programming experience? If yes, this is the right course for you to start!

“Big data”, “data science”, “data-mining” and “artificial intelligence” are all popular terms that are often encountered nowadays in the academic and in business worlds.

Computer Science is a field where the usage of computers and “computations” have continuously evolved. As computational power increases, computation becomes an indispensable tool for solving complex problems and making predictions. We are now able to “compute” various things from DNA sequencing to aerodynamics simulations and weather forecasting.

In this course, you will learn the essence of computer science. You will obtain an overview of cutting-edge computer science as well as learn the basics and introductory level knowledge of computer science, while experiencing, designing and writing your own simple programs. This revised course consists of 5 weekly units. A separate course covering the same content is also offered where the lectures are given in Japanese.

The course begins by introducing the notion of computation and data and how things work inside a computer. Before jumping into advanced topics like encryption and cryptanalysis, we will discover important notions like "arrays", "characters" and "strings" and we will know more about functions and subroutines throughout the lectures. Along the way we will practice with exercises to have a hands-on experience and deeper understanding of the explained notions. All exercises have files that can be downloaded and used. A detailed explanation about setting up the environment to run the programs using the language Ruby is provided at the beginning of the course.

By the end of this course you will be able to write your own programs for encryption and decryption of English texts. The course concludes with a general overview of the recent progress and research trends in the computer science field. This last part covers topics discussing the nature of computation as well as applications of computation in our modern society such as simulations, data mining and artificial intelligence AI.

Three deals to help you save

What's inside

Learning objective

・what is data (corresponding to an atom of data)? ・what is a computation (the one that corresponds to the atom of the computation)? ・basic information security: encryption, decryption, and crypto-breaking ・private key cryptosystems and public key cryptosystems ・representative examples of utilization of computations in present society (computer simulation, data mining) ・installation of software and the programming environments (editor, shell) ・how to use the programming environments (editor, shell) for computations ・basic programming using “ruby on rails,” a programming language

Syllabus

Introduction
Unit 1: What is Computation?
Learning Objectives
1.1 What is computation?
Read more
1.2 Data is Numbers
1.3 Inside the Computer
1.4 Programming with Ruby
1.5 Time to Practice 1
Quiz 1
Unit 2: What is Programming? (Part 1) Arrays
2.1 Arrays, Basic Concepts
2.2 How to Use arrays
2.3 Time to Practice 2
Quiz 2
Unit 3: What is Programming? (Part 2) Characters and Strings
3.1 Characters and Strings
3.2 Caesar Encryption
3.3 Time to Practice3
Quiz 3
Unit 4: What is Programming? (Part 3) Functions and Subroutines
4.1 Functions and Subroutines
4.2 Cryptanalysis
4.3 Time to Practice 4
4.4 Modern Encryption
Quiz 4
Unit 5: Summary and Appendix (Introduction to Research on Computation)
5.1 Brief Summary of this course
5.2 Appendix 1.1: On the Nature of Computation, Computability
5.3 Appendix 1.2: On the Nature of Computation, P ≠ NP Conjecture
5.4 Appendix 2.1: Applications of Computation, Simulation
5.5 Appendix 2.2: Applications of Computation, Data Mining
5.6 Appendix 2.3: Applications of Computation, AI (Artificial Intelligence)
Quiz 5
Who is Professor Watanabe? Introduction to Computer ScienceInstructions for learners on how to study this course

Good to know

Know what's good
, what to watch for
, and possible dealbreakers
Develops cryptography, encryption, and decryption, which are foundational skills in computer science and cybersecurity
Introduces learners to object-oriented programming, a cornerstone of many real-world applications and systems
Introduces learners to cryptography and its practical applications in cybersecurity
Taught by Osamu Watanabe, a renowned computer scientist and cryptography expert
Access is provided to a programming environment for immediate, hands-on practice and experimentation
Uses a clear and well-defined structure and layout, with learning objectives and clear progression of topics

Save this course

Save Introduction to Computer Science and Programming to your list so you can find it easily later:
Save

Activities

Be better prepared before your course. Deepen your understanding during and after it. Supplement your coursework and achieve mastery of the topics covered in Introduction to Computer Science and Programming with these activities:
Compile Study Resources
Organizes and consolidates study materials, enhancing accessibility and improving retention.
Show steps
  • Gather lecture notes, slides, assignments, and other relevant materials.
  • Create a digital or physical folder to store the compiled resources.
Review Arrays and Characters
Refreshes fundamental concepts of arrays and characters, ensuring a strong foundation for subsequent topics.
Browse courses on Arrays
Show steps
  • Revisit lecture notes or online resources on arrays and characters.
  • Practice creating and manipulating arrays and characters in a programming environment.
Read "Grokking Algorithms"
Provides a strong foundation in algorithms and data structures, essential for understanding computer science concepts.
Show steps
  • Read Chapter 1-3 to understand basic concepts of algorithms and data structures.
  • Complete practice exercises in each chapter to reinforce your understanding.
  • Review challenging sections and seek clarification from instructor or peers.
Five other activities
Expand to see all activities and additional details
Show all eight activities
Attend Study Groups
Facilitates collaboration, discussion, and peer learning, enhancing understanding and retention.
Show steps
  • Join or form study groups with classmates.
  • Meet regularly to discuss course material, solve problems, and prepare for assessments.
Follow Ruby on Rails Tutorial
Provides hands-on experience in building web applications using the Ruby on Rails framework.
Browse courses on Ruby on Rails
Show steps
  • Set up the development environment and install necessary software.
  • Follow the official Ruby on Rails tutorial step by step.
  • Build a simple web application using Ruby on Rails.
  • Troubleshoot any errors or issues encountered during the development process.
Solve LeetCode Problems
Enhances problem-solving skills and strengthens understanding of algorithms and data structures through practical application.
Browse courses on Problem-Solving
Show steps
  • Select problems based on difficulty level and start with easier ones.
  • Analyze problem statements and develop logical solutions.
  • Implement solutions in the preferred programming language.
  • Review solutions and identify areas for improvement.
Build a Basic Ruby Program
Allows students to apply their knowledge of Ruby to create a working program, solidifying their understanding.
Browse courses on Programming
Show steps
  • Design a simple program that performs a specific task, such as calculating averages or generating random numbers.
  • Write the code in a Ruby file using proper syntax and data structures.
  • Test and debug the program to ensure it runs correctly.
Contribute to Ruby Projects
Provides practical experience in software development and collaboration, while deepening understanding of Ruby.
Browse courses on Ruby
Show steps
  • Identify open-source Ruby projects that align with interests.
  • Read the project documentation and contribute to discussions.
  • Submit a pull request with code improvements or bug fixes.

Career center

Learners who complete Introduction to Computer Science and Programming will develop knowledge and skills that may be useful to these careers:
Data Analyst
Data Analysts collect, clean, analyze, and interpret data to provide insights and help businesses make informed decisions. This course provides a strong foundation in computer science principles that are essential for success as a Data Analyst. Students will learn how to collect, manage, and process data, and how to use programming to analyze and interpret data. They will also learn about data security and encryption, which are important skills for protecting sensitive data.
Data Scientist
Data Scientists use data to solve problems and make predictions. They develop algorithms and models to analyze data, and they use these models to make predictions or recommendations. This course provides a strong foundation in computer science principles that are essential for success as a Data Scientist. Students will learn how to collect, manage, and process data, and how to use programming to analyze and interpret data. They will also learn about data security and encryption, which are important skills for protecting sensitive data.
Computer Systems Analyst
Computer Systems Analysts design, develop, and implement computer systems and networks. They work with clients to gather requirements and design systems that meet those requirements. They may also work with hardware and software engineers to implement and maintain systems. This course provides a strong foundation in computer science principles that are essential for success as a Computer Systems Analyst. Students will learn how to design, develop, and implement computer systems and networks, and they will learn about the different hardware and software that are used in computer systems.
Database Administrator
Database Administrators design, implement, and maintain databases. They work with data analysts and other users to gather requirements and design databases that meet those requirements. They also work with software engineers to implement and maintain databases. This course provides a strong foundation in computer science principles that are essential for success as a Database Administrator. Students will learn how to design, implement, and maintain databases, and they will learn about the different database software and tools that are used in database administration.
Network Administrator
Network Administrators design, implement, and maintain computer networks. They work with network engineers to install and configure network hardware and software, and they may also work with end users to troubleshoot network problems. This course provides a strong foundation in computer science principles that are essential for success as a Network Administrator. Students will learn how to design, implement, and maintain computer networks, and they will learn about the different network hardware and software that are used in network administration.
Information Security Analyst
Information Security Analysts protect computer systems and networks from unauthorized access and attacks. They work with security engineers to implement and maintain security measures, and they may also work with law enforcement to investigate and respond to security breaches. This course provides a strong foundation in computer science principles that are essential for success as an Information Security Analyst. Students will learn about the different types of security threats and how to protect against them. They will also learn about the different laws and regulations that govern information security.
Computer Scientist
Computer Scientists research and develop new computer technologies and applications. They work with other scientists and engineers to design and build new computer systems and software. This course provides a strong foundation in computer science principles that are essential for success as a Computer Scientist. Students will learn about the different areas of computer science research, and they will learn about the different tools and techniques that are used in computer science research.
Software Developer
Software Developers design, develop, and maintain software applications and systems. They work with computer programmers to create and test software, and they may also work with end users to gather feedback and improve software products. This course provides a strong foundation in computer science principles that are essential for success as a Software Developer. Students will learn how to design, develop, and test software, and they will learn about the different programming languages and tools that are used in software development.
Computer Programmer
Computer Programmers design, write, and test computer programs. They work with software engineers to develop and maintain software applications and systems. This course provides a strong foundation in computer science principles that are essential for success as a Computer Programmer. Students will learn how to design, write, and test computer programs, and they will learn about the different programming languages and tools that are used in software development.
Software Engineer
Software Engineers design, develop, and maintain software applications and systems. They work with computer programmers to create and test software, and they may also work with end users to gather feedback and improve software products. This course provides a strong foundation in computer science principles that are essential for success as a Software Engineer. Students will learn how to design, develop, and test software, and they will learn about the different programming languages and tools that are used in software development.
Cybersecurity Analyst
Cybersecurity Analysts protect computer systems and networks from unauthorized access and attacks. They work with security engineers to implement and maintain security measures, and they may also work with law enforcement to investigate and respond to security breaches. This course provides a strong foundation in computer science principles that are essential for success as a Cybersecurity Analyst. Students will learn about the different types of security threats and how to protect against them. They will also learn about the different laws and regulations that govern cybersecurity.
Web Developer
Web Developers design, develop, and maintain websites and web applications. They work with web designers to create the look and feel of a website, and they work with programmers to develop the functionality of a website. This course provides a strong foundation in computer science principles that are essential for success as a Web Developer. Students will learn how to design, develop, and maintain websites and web applications, and they will learn about the different programming languages and tools that are used in web development.
Machine Learning Engineer
Machine Learning Engineers design, develop, and maintain machine learning models. They work with data scientists to prepare data for machine learning models, and they work with software engineers to implement and maintain machine learning models. This course provides a strong foundation in computer science principles that are essential for success as a Machine Learning Engineer. Students will learn about the different machine learning algorithms and how to use them to solve problems. They will also learn about the different tools and technologies that are used in machine learning engineering.
Data Engineer
Data Engineers design, develop, and maintain data pipelines and data warehouses. They work with data analysts and other users to gather requirements and design data pipelines that meet those requirements. They also work with software engineers to implement and maintain data pipelines and data warehouses. This course provides a strong foundation in computer science principles that are essential for success as a Data Engineer. Students will learn how to design, develop, and maintain data pipelines and data warehouses, and they will learn about the different tools and technologies that are used in data engineering.
DevOps Engineer
DevOps Engineers work with software developers and operations engineers to bridge the gap between development and operations. They automate the build, deployment, and testing of software applications, and they work to improve the efficiency and quality of software development and delivery. This course provides a strong foundation in computer science principles that are essential for success as a DevOps Engineer. Students will learn about the different tools and techniques that are used in DevOps, and they will learn how to automate the build, deployment, and testing of software applications.

Reading list

We've selected 13 books that we think will supplement your learning. Use these to develop background knowledge, enrich your coursework, and gain a deeper understanding of the topics covered in Introduction to Computer Science and Programming.
This classic textbook introduces fundamental concepts of computer science through a structured and interactive approach. It covers topics such as recursion, data structures, and object-oriented programming, making it a valuable resource for learners who want to deepen their understanding of computer science principles.
This comprehensive textbook provides an in-depth exploration of deep learning algorithms and architectures. It covers topics such as neural networks, convolutional neural networks, and recurrent neural networks, making it a valuable resource for learners who want to specialize in deep learning.
This comprehensive textbook provides an in-depth exploration of computer architecture. It covers topics such as computer organization, processor design, and memory systems, making it a valuable resource for learners who want to specialize in computer architecture.
This widely-used textbook provides a comprehensive introduction to computer networks and protocols. It covers topics such as network architecture, routing, and network security, making it a valuable resource for learners who want to understand the fundamentals of networking.
This widely-used textbook provides a comprehensive introduction to algorithms and data structures. It covers a wide range of algorithms, from sorting and searching to graph theory and dynamic programming. It valuable resource for learners who want to develop their algorithmic thinking and problem-solving skills.
This widely-used textbook provides a comprehensive introduction to database systems. It covers topics such as data modeling, query processing, and transaction management, making it a valuable resource for learners who want to understand the fundamentals of database systems.
This practical guide provides a hands-on introduction to deep learning using Python. It covers topics such as neural networks, convolutional neural networks, and recurrent neural networks, making it a valuable resource for learners who want to apply deep learning to real-world problems.
This authoritative textbook covers the principles and practice of cryptography and network security. It provides a comprehensive overview of encryption algorithms, protocols, and security mechanisms, making it a valuable resource for learners interested in securing digital data and communications.
Provides a comprehensive introduction to data analysis using Python. It covers topics such as data cleaning, data manipulation, and data visualization, making it a valuable resource for learners who want to use Python for data analysis.
This practical guide provides an introduction to big data principles and best practices. It covers topics such as data storage, data processing, and data analysis, making it a valuable resource for learners who want to understand the challenges and opportunities of big data.
This gentle introduction to machine learning provides a conceptual understanding of the field and its applications. It covers topics such as supervised learning, unsupervised learning, and neural networks, making it a valuable resource for learners who want to explore the basics of machine learning.
This practical guide introduces data science concepts and techniques from the ground up. It covers topics such as data cleaning, data analysis, and machine learning, providing hands-on examples and exercises that help learners develop practical data science skills.

Share

Help others find this course page by sharing it with your friends and followers:

Similar courses

Here are nine courses similar to Introduction to Computer Science and Programming.
Introduction to Computer Science and Programming Using...
Most relevant
Computer Science: Algorithms, Theory, and Machines
Most relevant
Programming a Quantum Computer with Qiskit
Most relevant
Statistical Inference and Hypothesis Testing in Data...
プログラミングしながら学ぶコンピュータサイエンス入門 : Introduction to Computer...
Principles of Computing (Part 2)
101: Introduction to Computer Science
Unsupervised Algorithms in Machine Learning
Introduction to Machine Learning: Supervised Learning
Our mission

OpenCourser helps millions of learners each year. People visit us to learn workspace skills, ace their exams, and nurture their curiosity.

Our extensive catalog contains over 50,000 courses and twice as many books. Browse by search, by topic, or even by career interests. We'll match you to the right resources quickly.

Find this site helpful? Tell a friend about us.

Affiliate disclosure

We're supported by our community of learners. When you purchase or subscribe to courses and programs or purchase books, we may earn a commission from our partners.

Your purchases help us maintain our catalog and keep our servers humming without ads.

Thank you for supporting OpenCourser.

© 2016 - 2024 OpenCourser