Choosing a method for algorithmic problems – is it an art or science?

I’ve been doing lot of programming challenges lately (such as on leetcode.com) and often find myself in a situation when I cannot pick a method for solving a problem. I stuck with questions like – should I use brute force or greedy search would work better or maybe dynamic programming would do the job? Then I start coding a solution just too find out it does not work and I have to pick another method.

I wonder if there is a way to restate the problem in some abstract way and from there to see what solution technique would work for it?

Is Group Theory useful in Computer Science in other areas but cryptography?

I have heard many times that Group Theory is highly important in Computer Science, but does it have any use other than cryptography? I tend to believe that it does have many other usages, but cannot find out where and how to apply Group Theory to other areas in CS, such as algorithms, data structres, graphs, complexity and so forth.

Sets in Mathematics are immutable but in Computer Science sets are mutable and called “Dynamic Sets” – truth of the statement

While reading the classic text Introduction to Algorithms by Cormen et. al. I came across the following claim:

Sets are as fundamental to computer science as they are to mathematics. Whereas mathematical sets are unchanging, the sets manipulated by algorithms can grow, shrink, or otherwise change over time. We call such sets dynamic.

I felt a bit odd after reading the statement that "set" in Mathematics and in CS are different from the mutable point of view. Now in Mathematics what we deal with are theoretical aspect of things and as such "set" is a theoretical concept and so it is in Theoretical CS. If it is immutable in mathematics then so it is in CS. Mathematics and Theoretical CS are interlinked. So given a graph algorithm which say finds the minimum shortest path between a pair of vertices , we can’t say whether it belongs to Mathematics or CS.

Often in algorithms we write statements as :

$ $ S = S \cup \{a\} \quad \text{view $ 1$ }$ $

Which seems to sort of change our set $ S$ , but if we look it in this way:

$ $ S’= S \cup \{a\} \quad \text{view $ 2$ }$ $

$ $ S=S’$ $

So in the second situation we are not modifying our actual set $ S$ we are forming a new set $ S’$ with $ S$ augmented with $ a$ and then after that we are making the variable $ S$ refer to $ S’$ .

What I feel is that the concept of the set being mutable or immutable is solely dependent on the data-structure of representation of the abstract concept of "sets" and since in data-structure the two steps in view $ 2$ are combined and implemented, so they are called dynamic sets.

In short I feel that Dynamic Sets are data-structure implementation of sets and not the abstract sets.

The wonders for data science and python

     Data science involves the use of advanced math techniques, statistics, and big data. however, data science also involves helping you make smart decisions, creating suggestions for options based on previous choices, and making robots see objects.                                                                                                                                  in fact, people use data science in so many different ways that you literally can't look anywhere or do anything without feeling the effects of data science on your life.                                    in short , data science is the person behind the partition in the experience of the wonderment of technology.                                                                                           without data science, much of what you expect as typical and expected to-day would n't even be possible.[EXTRACT OF A BOOK-PYTHON FOR DATA SCIENCE FOR DUMMIES  BY JOHN PAUL MUELLER AND LUCA MASSARON}                                                                                   But I would like to know the match between data science and python, how to create the connection between Python and data science. as far as I know, python is a programming language. 

Understanding proofs Lemma 11 & 10 in this specific Computer Science Scheduling Paper

I’m having a hard time wrapping my head around the proofs Lemma 11 and Lemma 10 (Pages 10 and 11) in this paper called: Preemptive and Non-Preemptive Real-Time UniProcessor Scheduling.

Generally the proofs have very few steps in between and I can’t seem to understand how the author continues from one step to another. Therefore, I would be very gratefull in a more step by step detailed explanation of the proofs mentioned.

Thank you in advance!

How are scientific research projects planned? In particular computer science, but possibly there exists processes for all research?

Possibly some context: Take any research endeavor. Finding a vaccine. Going to the moon. Clean energy. I don’t have a background in these scientific areas so picking one closer to home (Comp Sci) might be better. But the idea is how to battle the Unknowns? How to do it economically? How to make progress while not getting analysis paralysis?

Some might suggest a scrum, or an agile process try to solve these questions. I’m not certain that they address the same level or kinds of Unknowns.

Are there previous experiences that work, and those that don’t work? And why? The questions grows on the way forward through unknowns, and by definition the Unknown doesn’t exactly have a road map, and new context is developed regularly.

This maybe simply the question of the ‘meta’ variety: Is there research on comp sci research? If so does Comp Sci research have approaches or techniques that they rely on?

Is XSS a solved computer science problem?

I have a fundamental theory question. Is looking for cross-site scripting a solved computer science problem? Or is it an open problem? Does it approximate the halting problem, injection problem or similar known CS problems?

Or is XSS not intractable but just tedious to find and fix as there are many possible sources and sinks to a scripted web page, poor programmer understanding of the vulnerability, etc or the plethora of web technologies out there that impede the solution to a sound solution? (I’m thinking about content security policy as an equivalent of NX bit in native code).

Anyone can point me to any resource (academia included) would be much appreciated.