Genetic Algorithms for computer security [closed] - security

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
I am in the process of choosing project for uni. And I am really interested on combining genetic algorithms and computer security.
Therefore my question, Is it possible to use GA on any aspect for computer security? For example?. I was thinking something like a evolutionary firewall/anti-virus that will be able to self protect/inhibit threats. Is such thing plausible?
I really appreciate you guys input, advice, comments.

First of all, the whole idea of genetic algorithms is still being debated, i.e. if genetic algorithms are in any way better suited to solving optimization problems than other methods (who are either proven, easier to use, or provide other advantages).
That being said, yes, I know of a security-related application of genetic algorithms, mainly used in fuzzing to optimize code paths and therefore code coverage. There is a paper called Vulnerability analysis for x86 executables using genetic algorithm and fuzzing and a BlackHat presentation predating that paper by two years called "Sidewinder": An Evolutionary Guidance System for Malicious Input Crafting

I briefly looked into this before, and there seems to be quite a bit of resources around using genetic algorithms for network intrusion detection. Hope it helps.

Take a look at Stephanie Forrest's group's work on computer immune systems.
It's not traditional GAs, but it's very close. Hope that helps.

Related

What is extreme programming and when it is using? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 2 years ago.
Improve this question
I am new to programming and I try to research as much as possible in this field. And once I came across to this expression: "Extreme and pair programming". Pair programming is an easy term, and I found quite clear documentation about this. But extreme programming... I found some articles about it, but explanation wasn't so well. All I understood that extreme programming is an Agile development framework. But why I must use that, what is difference between this and another types of programming styles?
Can anyone explain me what is extreme programming language very clearly?
Extreme programming (often called XP) is an agile framework that was developed by Kent Beck in the 1990's.
There aren't too many people that use the whole XP framework these days, but a lot of the engineering practices it popularised are very common.
Examples include:
Pair programming
Test driven development
Continuous integration
Frequent releases
Constant refactoring
XP favours an approach of writing the minimum amount of code to solve the problem at hand. Things like optimisation and forward planning are generally a low priority. This is the 'extreme' part of extreme programming.
The idea is that you write code to solve the current requirement. If you then find you need the code to be faster, or scaleable, etc. then you refactor it.

What exactly does it mean for a programming language to be simple? [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 5 years ago.
Improve this question
What factors are important? How do you know if a given programming language is "simple" or "simpler" than another language?
I'm not sure if this is a fair question to ask, since different languages serve different purposes and it might not really be comparing apples to apples.
However, with that said, memory management would come to mind. One can argue that Java is a "simpler" language than C++, since it has a garbage collector that can deal with some of the complexities around memory management, instead of forcing you to do it yourself.
In my perspective, these are the points that define the complexity of a language.
Variation of syntax from common pseudocode and constructs
Ease of developing a structure for real-life entities like objects
Methods of structure enforcement at compile time.
Memory management strategy allocation/deallocation
Code reusability
Ease of code headers and directives management
Inbuilt libraries
Relative installation package sizes
Data exchange capabilities like over network of files
Process handling like thread management
Relative brevity of the code
Speed of compilation
Developer community size and documentation
OpenSource implementations
Platform dependence
And many more could be added to this list.

Incremental Development - Agile or Plan Driven [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 6 years ago.
Improve this question
I'm currently confused in incremental software methodology
what is the main difference between incremental development which adopt plan driven approach and the one that adopt agile approach ?
can anyone explain to me what is the difference between those two and if my choice was good for the project?
Learning is at the core of the agile approaches. It embraces the fact that it is almost impossible to have enough information to make detailed plan up front. Instead implementing, or possibly trying to implement, your first feature will trigger very valuable learnings. Both about your implementation and the usage and actual needs in the field.
I'm not sure what "documentations are really important" actually means, but dividing implementation along module boundaries will cause a number of unwanted effects:
you can only learn about the usage of the complete system after all modules are done, a.k.a. Too late. That will drive unknown remaining amount of work after you thought you were done.
how do you know that the first module is done? Presumably based on some guesswork about what it should do, which might be right but most probably is at least slightly wrong, which causes unknown late modifications
integration problems will also show up after the third module was supposed to be finished
All three drive late realizations about problems and unknown amount of work left to the end.
Agile focuses on driving out these learnings and information by forcing early feedback, such as early integration (as soon as there is a skeleton for the three modules), user feedback by forcing implementation of one user level feature at a time with demos of them as soon as hty are ready.
It is a strategy for minimizing risks in all software endeavours.
In my mind, you should have gone for an agile aproach.

Need an SVM implementation or a Java library [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I have a data set with 2400 samples and 10,000 features. All the data is binary (+1 or -1). I need to run it past an SVM algorithm so I could compare my algorithm to it. However, I know not much about SVMs or which package to use. I tried reading about to so I could implement one, but it's way over my head, and I need to get from it is the weights vector. I'm a windows user and I've got my implementation in Java. I could export my data into a text file with 1s and 0s. I have access to MatLab, but something tells me it will be extremely slow and won't really run on my 1.6ghz 2gb RAM laptop (and I need it to) fast enough. I have to run the algorithm a couple hundred times to get accurate results.
I'm really just looking for a quick and easy to understand library or SVM implementation that I can use in my case.
Thank you all. Feel free to ask any additional questions to assist me better.
I ended up using a JNI for SVN light that can be found here: http://www.mpi-inf.mpg.de/~mtb/svmlight/
Didn't take long to figure out how to use it and it's surprisingly fast (seconds).
I don't think that there is any path to a 'quick and easy understanding of an SVM.' The math is hard and trying to train one without a good understanding is a very quick trip to shooting yourself in the foot.
OpenSVM from sourceforge is certainly sitting there. It shouldn't matter to you if it's in Java, just download a JDK.
I can't answer your question as to the likely performance of a SVM training procedure in MatLab, perhaps someone else can.

Applying agile techniques and running a helpdesk [closed]

Closed. This question needs to be more focused. It is not currently accepting answers.
Want to improve this question? Update the question so it focuses on one problem only by editing this post.
Closed 7 years ago.
Improve this question
My team does some development, but is mainly involved in supprting an existing suite of applications. We now have an imbedded tester (and another on the way). So how can I apply agile practises in what is a purely reactive situation?
You could try to use Kanban. It is more suited for such dynamic situations than Scrum. The ultimate solution would be to use Kanban for support activities and Scrum for development, but in case you spend much less than 50% of your time for development this may be not worthed (overengineering).
Even though it is purely reactive, you surely have larger requests that need to be prioritized? I am using Scrum in a support situation to help prioritizing the non-emergency work that often requires hours or days of effort. I think that Scrum in some ways fits in even better in a support situation than in development.
I would start with prioritizing the issues that come in (someone from the business end should be responsible for that), making things visible (e.g. getting them up on a task board), and improving your definition of done for each task (tests, code review, etc).
Now that you have a tester with the team, it would be a good time to start some TDD and definitely start automating a lot of your tests.
Once you have some of these basics in place, you can look at either Scrum or Kanban depending on your needs. If tasks always seem to come out of the blue, Kanban is probably more appropriate as another poster suggested.
In order to be successful with Kanban, you must make sure that you have a very solid definition of done to ensure that you maintain quality throughout. Without it, you won't see the full benefit.
I would also recommend scheduling regular retrospectives to see what is working for you and where you need to improve.

Resources