cs101

Week 2 – Tools and Purposes

The point is to add value (enrich) and serve

The first algorithm was presented by el-Hârizmî in his book “Hisab al-algebra ve al-mukabala”. The word algorithm was born from the European pronunciation of el-Hârizmî’s name. (https://tr.wikipedia.org/wiki/Algoritma)

Being addicted to tools, languages or softwares is not a good thing. Which tools you use depends on your needs and budget (cost).

Which programming language and what is priority?

Purpose of your software: What kind of software are you building?

Your experience level: Beginner or Intermediate/Advanced

Performance requirements: Does your software need to be super fast?

Community and support: A large and active community around a language

Available libraries and frameworks: Many languages have pre-built libraries

Development tools: Integrated Development Environments (IDEs)

This is totally up to you

Research existing software similar to yours. See what languages they use.

Don’t be afraid to learn a new language! Many resources are available online and in libraries to help you get started.

Start with a simple project to get comfortable with the language before tackling your main software.

JavaScript

Usage area: Web development (front-end, back-end, full-stack), mobile app development, game development, data visualization. JavaScript is a versatile language that can be used for a wide variety of purposes. It is the main language used for creating interactive elements on web pages. JavaScript can also be used to create server-side applications with frameworks like Node.js.

Python

Usage area: Data science, machine learning, web development, scripting, automation.

Python is a popular general-purpose language that is known for its readability and ease of use. It is a popular choice for data science and machine learning because of its extensive libraries and frameworks, such as NumPy, Pandas, and TensorFlow.

Go

Usage area: Web development (back-end), cloud computing, network programming, command-line tools.

Go is a relatively new language that is gaining popularity for its simplicity, concurrency features, and efficiency. It is a good choice for developing web services, cloud applications, and network programming tools.

Java

Usage area: Enterprise applications, Android app development, big data, embedded systems.

Java is a mature and well-established language that is widely used for developing large-scale enterprise applications. It is also the primary language used for developing Android apps. C# is a general-purpose language that is similar to Java in many ways.

C ++

Usage area: System programming, performance-critical applications, game development, embedded systems.

C++ is a powerful and versatile language that is often used for system programming and developing performance-critical applications. It is also a popular choice for game development.

Swift is a modern language that is specifically designed for developing Apple applications.

Kotlin is becoming the primary language for Android development. Many popular apps like Netflix, Uber leverage Kotlin for their Android versions.

Kotlin can be used for cross-platform mobile development with frameworks like KMM (Kotlin Multiplatform Mobile). This allows sharing code between Android and iOS apps, improving development efficiency.

Development Tools

Integrated Development Environments (IDEs): These are like all-in-one workplaces for programmers. Popular options include Visual Studio, IntelliJ IDEA, Android Studio, and Xcode (specific to Apple development). IDEs provide features like code editing, syntax highlighting, debugging, project management, and integration with other tools.

Text Editors: Some developers prefer lightweight text editors for coding, like Sublime Text, Atom, or Vim.These offer basic editing features and can be customized with plugins for additional functionality.

Version Control Systems (VCS)

Git: This is the industry standard for version control. It allows teams to track changes in code, collaborate effectively, revert to previous versions if needed, and manage different branches of development. GitHub or GitLab are popular platforms to host Git repositories.

Code Collaboration:

GitHub: More than just version control, GitHub also offers features like code review, pull requests, and issue tracking. It facilitates collaboration among developers by allowing them to share code, discuss changes, and merge code contributions.

GitLab: Similar to GitHub, GitLab is a version control platform with additional features like project management,CI/CD pipelines, and code reviews. It offers an all-in-one solution for software development teams.

Building and Testing:

Build Automation Tools: These tools automate repetitive tasks like compiling code, running tests, and packaging software for deployment. Examples include Maven, Gradle, or tools integrated within IDEs.

Testing Frameworks: Unit testing frameworks like JUnit (Java) or Jest (JavaScript) help ensure individual parts of the code function correctly. Integration testing tools verify how different parts interact.

Deployment and Monitoring:

Continuous Integration/Continuous Delivery (CI/CD): This is a practice where code changes are automatically built, tested, and deployed. Tools like Jenkins or CircleCI automate these workflows.

Monitoring Tools: Applications like Prometheus or Datadog are used to monitor the health and performance of deployed software, helping identify and troubleshoot issues.

Project Management and Collaboration:

Jira: Primarily a project management tool, Jira offers features like task management, issue tracking, Kanban boards, and workflows. Many software development teams use Jira to track bugs, manage sprints, and collaborate on projects.

Trello: A popular Kanban board-based tool, Trello offers a visual way to manage tasks, track progress, and collaborate. It’s great for organizing workflows, assigning tasks, and keeping track of project progress.

Asana: Similar to Trello, Asana offers project management features with a focus on team communication and collaboration. It allows for task creation, assigning deadlines, and keeping track of project progress in a user-friendly interface.

Real-time Communication:

Slack: Arguably the most popular option, Slack is a messaging platform that allows for team chats, direct messages, file sharing, and integrations with other tools. Many software development teams use Slack for quick communication, updates, and informal discussions.

Microsoft Teams: This is another popular platform, especially for teams already using Microsoft products. Teams offers features similar to Slack, including chat, video conferencing, file sharing, and integrations with other Microsoft services.

Server Management Tools

Server management tools are essential for efficiently managing and optimizing server performance, availability, and security. They help system administrators handle tasks like monitoring, configuration, deployment, and troubleshooting. Here’s a breakdown of common server management tools categorized by their functions:

Monitoring and Management Tools

Configuration Management Tools

Deployment Tools

Security Tools

Firewall Systems

Palo Alto Networks: A leader in next-generation firewalls (NGFWs), Palo Alto Networks firewalls are known for their advanced threat prevention capabilities, application identification, and user ID-based security.

Fortinet: Another major player, Fortinet offers a range of firewall solutions, including NGFWs, for various network sizes and needs. Their firewalls are known for their performance, scalability, and security features.

Cisco: A networking giant, Cisco offers a variety of firewall solutions, including Cisco ASA firewalls, which are popular for their reliability and manageability in enterprise environments.

Check Point: Renowned for their security expertise, Check Point firewalls provide robust threat protection and a wide range of security features.

McAfee: A household name in security, McAfee offers firewall solutions for businesses and consumers. Their firewalls are known for their ease of use and protection against common threats.

Sophos: Providing a unified threat management (UTM) solution, Sophos firewalls go beyond basic firewall functionality and offer additional security features like intrusion prevention and web filtering.

Trend Micro: Another well-known security company, Trend Micro offers firewall solutions for businesses of all sizes. Their firewalls are known for their protection against malware and other online threats.

Choosing the right firewall system depends on your specific network needs and security requirements. Here are some factors to consider:

Additional Tools

Choosing the right tools depends on factors such as: