Computing is about using hardware and software to process and manage information. This includes system administration, database creation and management, program and application development, computer security, IT management, and more. This page will introduce you to computing topics covered in the Rheinwerk Computing series, and how to get started learning in each.
There are numerous programming languages and tools out there for developers to utilize in their projects. While it isn’t possible to cover all of them in a single source, it’s worth learning about the most popular. In addition, we’ll cover Git and Docker, which are software development tools and platforms that make developers’ jobs easier by simplifying version control and supporting application containerization.
Java is an object-oriented programming language used for backend software development, mobile application programming, and game development. Java developers write code that is compiled into a bytecode, a binary code that is run on a virtual machine. Because all code is compiled this way, it can be run on any Java platform, making platform-specific changes unnecessary.
In addition to being a programming language, Java also serves as a runtime environment and standard library, which Oracle (the language’s developer) calls the Java platform.
Examples of products created using Java include Facebook, Amazon, Minecraft, and eBay.
Python is a general-purpose programming language used for backend programming, web development, scripting, and data science. It allows both object-oriented and functional programming, and includes a compiler that utilizes the bytecode feature as described in the Java section above. Python also focuses on flexibility, allowing developers to extend Python’s standard library.
Examples of web applications developed using Python include Gmail, YouTube, and Reddit.
Examples of applications created using the Node.js include PayPal, Yahoo, Netflix, and Uber.
Examples of companies that have created apps using components from the React library include Walmart, Skype, Facebook, and Instagram.
Git is a version control system that keeps track of all the changes that have been made in a program, and who made those changes. This is beneficial because the history provides context into changes and when things happened that may have caused an issue—providing a good “restore point” to backtrack to while figuring out what the issue was. Another benefit is that it allows for multiple developers to work on a project at the same time, and merge all the individual branches of work into the main branch when they’re finished.
Below is an example of a repository hosted on GitHub.
Companies that utilize Git in their projects include Google, Microsoft, Android, and Twitter.
Docker is a containerization platform that allows developers the opportunity to run their programs in multiple different languages and runtimes without having to install each on their computer. This is done by packaging applications into “containers” that include everything needed to execute the code in a virtual environment—similar to a virtual machine on a computer. By utilizing Docker containers, developers can build applications once and run them anywhere--shipping code faster and providing more value to users.
Examples of companies that utilize Docker include Spotify, Yelp, and Shopify.
The Spring framework provides Java developers with a set of building blocks to create applications with less code and configuration. It allows developers to worry less about the platform that they’re running on, which makes ad-hoc modification, testing, and reuse easier to accomplish.
Examples of companies that use the Spring framework include Starbucks, Nokia, and BlackRock.
Spring Boot is an extension of the Spring framework and empowers Java developers to create efficient, scalable applications without the burden of excessive configuration. By abstracting complexities and providing pre-built templates, the framework accelerates development, allowing programmers to focus on crafting robust, production-ready applications that can be run in a single executable file.
Examples of companies that have created apps using components from the Spring Boot library include Udemy, Intuit, and Trivago.
HTML stands for Hypertext Markup Language, and it serves as the basic building block for all websites. Developers using HTML create the structure of a webpage through the use of opening and closing tags. This includes laying out the headings of a webpage; adding elements such as images, buttons, and sections; and structuring other framework elements.
HTML-only websites are quite plain as more stylized design is achieved through the use of CSS. To learn more about what a webpage’s HTML might look like, you can open the developer tools page of your browser to see how the page is structured.
CSS stands for Cascading Style Sheets, and it serves as the way a website gets its ornamentation. While HTML provides the structure of a webpage, it’s often quite plain; by adding CSS, developers can add a more varied layout, color, font changes, and more, providing a better user experience. Check out this example of a webpage without CSS (on the left) to get an idea of what CSS adds to the user experience (on the right).
Webpage and application development can generally be categorized into two key areas: frontend programming and backend programming. While historically, the frontend and backend have been programmed by different groups of developers, over time more and more developers have been combining the two skillsets into one so they become what is known as a full stack developer.
Backend development, on the other hand, is focused on connecting applications to servers and databases, and connecting servers and databases to each other. Backend developers use languages, frameworks, and tools such as Python, Ruby, Java, Node.js, and APIs. They are in charge of making sure applications run as designed and troubleshoot issues when they arise.
As mentioned above, full stack development refers to the combining of frontend and backend development tasks by a single developer. The benefit of full stack development is that one developer can do both types of programming, providing more value to employers.”
An operating system (OS) serves as the foundational software that manages and controls the fundamental operations of a computer system. From handling file storage and input/output operations to ensuring security and facilitating communication between hardware components, an operating system is an essential component that empowers computers to function effectively and efficiently.
Windows Personal computers (PCs) have been the cornerstone of computing for decades. Known for their wide availability and compatibility, PCs run on various operating systems, with Microsoft Windows being the most prominent. PCs offer an extensive range of hardware configurations, allowing users to tailor their systems to specific needs, whether it's for gaming, content creation, business tasks, or general use. This modularity also facilitates easy upgrades and repairs.
macOS Mac computers, developed and manufactured by Apple, stand out for their design elements, user-friendly interface, and robust hardware-software integration. Operating on macOS, Macs are renowned for their stability, security features, and optimized performance. Apple's stringent control over both the hardware and software aspects of Macs ensures a cohesive and reliable user experience. Macs are favored by creatives, designers, and professionals in media-related fields due to their exceptional capabilities for graphic design, video editing, and audio production.
Linux Linux is an operating system that is often associated with open-source and community-driven development, and has carved a unique niche in the computing landscape. Linux comes in various distributions, such as Ubuntu, Fedora, and CentOS, each tailored to specific user preferences and requirements. Known for its stability, security, and customization options, Linux is widely used in server environments, powering a significant portion of the internet's infrastructure. Its versatility extends to personal computing as well, with many users opting for Linux-based systems for programming, system administration, and privacy-conscious browsing.
Computers and web applications are made up of many parts, and often use sensitive information, including personal data, proprietary secrets, and governmental documents. Because this data is important to those accessing it, and because computers are interconnected more than ever thanks to the internet and cloud technology, it’s crucial to safeguard against unauthorized access.
Computer security is always evolving as bad actors find new system vulnerabilities, so administrators must stay on top of updating systems and providing new ways to safeguard against intrusions.
There are three major areas that need to be considered when looking at computer security: people, processes, and technology. It’s important to make sure that those who should have access to a system are the only ones able to access it, and that they have secure ways to use it—such as using strong passwords and two-factor authentication. Once logged in, it’s important to ensure that the activities being performed are following best practices and keeping in line with different data privacy laws and security processes. And to make sure systems are safe from outside attacks and internal compromise, a number of technologies exist to keep things running safely, such as firewalls.
One popular method of detecting security weaknesses is penetration testing, which involves simulating attacks on a computer system. Also known as ethical hacking, penetration testing plays a large role in finding vulnerabilities before they can be exploited.
The computing realm is hurtling towards a future defined by groundbreaking advancements. Innovations like blockchain and artificial intelligence usher in a new era of technology, marked by both possibilities and challenges across various domains.
Blockchain is a revolutionary technology: a distributed and decentralized digital ledger that records transactions in a secure, transparent, and immutable manner. The technology's foundation rests on cryptographic principles, ensuring the integrity and authenticity of data. This novel approach eliminates the need for intermediaries, reducing costs and increasing trust between parties. Originally popularized by financial uses such as Bitcoin, blockchain's potential extends far beyond financial applications to sectors like SCM, healthcare, and digital identity verification.
Generative artificial intelligence (AI) uses neural networks and deep learning models to create original, computer-generated content that resembles human-created data. (In fact, this section was actually written by a generative AI platform, ChatGPT!) Generative AI models operate by learning from vast datasets, subsequently generating new content based on the patterns and styles they've assimilated. Generative AI has far-reaching implications across diverse domains, including art and media, product design, architecture, fashion, and more.
Want to learn more about computing and the topics described above? Additional information can be found in the blogs and books listed below.
Learn more computing from the SAP PRESS Blog's General Computing section.